У меня есть оператор 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);
Но это не компилируется. Есть ли опрятный трюк?