私はこのように、独自のカスタム比較子を使用してLINQ個別()文があります。のための等値比較のために、デリゲートを使用してLINQの明確な()
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);
しかし、これはコンパイルされません。きちんとしたトリックはありますか?
あなたの 'Equals'の実装に 'X'と' y'のヌルに対する 'ReferenceEquals'チェックを有するべきです。 – nicodemus13