我已经编写了以下代码以Linq.Distinct(IEqualityComparer)
尽可能最基本的方式实现,但是simpleCollection
如果为 1,则返回 2 项。
奇怪的是,我注意到断点Equals
永远不会被击中。
这可能与我的实施有关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();
}
}