Вот компаратор равенства, который я только что написал, потому что мне нужен отдельный набор элементов из списка, содержащего сущности.
class InvoiceComparer : IEqualityComparer<Invoice>
{
public bool Equals(Invoice x, Invoice y)
{
// A
if (Object.ReferenceEquals(x, y)) return true;
// B
if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null)) return false;
// C
return x.TxnID == y.TxnID;
}
public int GetHashCode(Invoice obj)
{
if (Object.ReferenceEquals(obj, null)) return 0;
return obj.TxnID2.GetHashCode();
}
}
Distinct
требует компаратора, а не Func
? Если бы я хотел, могу ли я заменить (C) на
return GetHashCode (x) == GetHashCode (y)