Вы пытались реализовать свой собственный IEqualityComparer? Вы можете передать это перегрузке .Equals (), чтобы определить собственную логику равенства, как в
Пользователь A = Пользователь B, даже если они являются отдельными экземплярами, если свойства x, y, z одинаковы.
Смотрите это:
* MSDN 1006 *
Edit: я должен был написать, что вы можете создать экземпляр EqualityComparer и передать два экземпляра его методу Equals () и получить bool. Основное консольное приложение ... покажет true, false, false. Вещи тривиальны, имеют два показанных свойства.
var comparer = new ThingEqualityComparer();
Console.WriteLine(comparer.Equals(new Thing() { Id = 1, Name = "1" }, new Thing() { Id = 1, Name = "1" }));
Console.WriteLine(comparer.Equals(new Thing() { Id = 1, Name = "1" }, new Thing() { Id = 2, Name = "2" }));
Console.WriteLine(comparer.Equals(new Thing() { Id = 1, Name = "1" }, null));
class ThingEqualityComparer : IEqualityComparer<Thing>
{
public bool Equals(Thing x, Thing y)
{
if (x == null || y == null)
return false;
return (x.Id == y.Id && x.Name == y.Name);
}
public int GetHashCode(Thing obj)
{
return obj.GetHashCode();
}
}