这是我用来测试的代码,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(); } }
1 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
这很正常,因为你用Distinct()方法时,默认的Comparer是EqualityComparer<T_ZJ_PostTouch>.Default 这个comparer,对于大部分引用类型,比较的是引用。而你自己的 OrgCodeComparer比较的是OrgCode字段。
- 1 回答
- 0 关注
- 375 浏览
添加回答
举报
0/150
提交
取消