List Distinct()结果返回不是预期结果

这是我用来测试的代码,T_ZJ_PostTouch还有其他字段

List<T_ZJ_PostTouch> list = new List<T_ZJ_PostTouch> {
new T_ZJ_PostTouch{OrgCode="1"},
new T_ZJ_PostTouch{OrgCode="1"},
new T_ZJ_PostTouch{OrgCode="2"},
new T_ZJ_PostTouch{OrgCode="2"},
};

 

int count = list.Distinct().Count();//结果是4
int count1 = list.Distinct(new OrgCodeComparer()).Count();//结果是2

 

public class OrgCodeComparer : IEqualityComparer<T_ZJ_PostTouch>
{
public bool Equals(T_ZJ_PostTouch x, T_ZJ_PostTouch y)
{
if (x == null)
return y == null;
return x.OrgCode == y.OrgCode;
}

public int GetHashCode(T_ZJ_PostTouch obj)
{
if (obj == null)
return 0;
return obj.OrgCode.GetHashCode();
}
}


慕的地6264312
浏览 1143回答 1
1回答

翻阅古今

这很正常,因为你用Distinct()方法时,默认的Comparer是EqualityComparer<T_ZJ_PostTouch>.Default 这个comparer,对于大部分引用类型,比较的是引用。而你自己的 OrgCodeComparer比较的是OrgCode字段。
打开App,查看更多内容
随时随地看视频慕课网APP