Use a delegate for the equality comparer for LINQ's Distinct()

У меня есть оператор LINQ Distinct (), в котором используется мой собственный компаратор, например:

class MyComparer<T> : IEqualityComparer<T> where T : MyType
{
    public bool Equals(T x, T y)
    {
        return x.Id.Equals(y.Id);
    }

    public int GetHashCode(T obj)
    {
        return obj.Id.GetHashCode();
    }
}

...

var distincts = bundle.GetAllThings.Distinct(new MyComparer<MySubType>());

Это все хорошо, красиво и работает так, как я хочу . Мне нужно из любопытства определить свой собственный Comparer или я могу заменить его делегатом? Я думал, что смогу сделать что-то вроде этого:

var distincts = bundle.GetAllThings.Distinct((a,b) => a.Id == b.Id);

Но это не компилируется. Есть ли хитрый трюк?

46
задан Peter Mortensen 18 October 2015 в 15:14
поделиться