LINQでまれに使うことのあるIEqualityComparerだが、
いちいちクラスを定義するのが面倒なので、
とりあえず、諸々の責任は放棄したこんなクラスでもあれば、概ねはどうにかなると思う。
GenericEqualityComparer.cs
public class GenericEqualityComparer<T> : IEqualityComparer<T>
{
private Func<T, T, bool> _predicate;
private Func<T, int> _gethash;
public GenericEqualityComparer(Func<T, T, bool> predicate)
: this(predicate, obj => obj.GetHashCode())
{
}
public GenericEqualityComparer(Func<T, T, bool> predicate, Func<T, int> gethash)
{
_predicate = predicate;
_gethash = gethash;
}
public bool Equals(T x, T y)
{
return _predicate(x, y);
}
public int GetHashCode(T obj)
{
return _gethash(obj);
}
}