Linq.Distinct(IEqualityComparer)
可能な限り最も基本的な方法で実装するために次のコードを記述しましたがsimpleCollection
、1の場合は代わりに2つのアイテムを返します。
Equals
奇妙なことに、iveは上のブレークポイントがヒットしないことに気づきました。
それは私の実装と関係があるのGetHashCode()
でしょうか?
public class testobjx
{
public int i { get; set; }
}
public class mytest
{
public Main()
{
var simpleCollection = new[] { new testobjx() { i = 1 }, new testobjx() { i = 1 } }.Distinct(new DistinctCodeType());
var itemCount = simpleCollection.Count();//this should return 1 not 2.
}
}
public class DistinctCodeType : IEqualityComparer<testobjx>
{
public bool Equals(testobjx x, testobjx y)
{
return x.i == y.i;
}
public int GetHashCode(testobjx obj)
{
return obj.GetHashCode();
}
}