首页 新闻 会员 周边 捐助

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

0
[已解决问题] 解决于 2012-07-25 18:35

这是我用来测试的代码,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();
}
}

江南_雾里看花的主页 江南_雾里看花 | 菜鸟二级 | 园豆:394
提问于:2012-07-25 17:24
< >
分享
最佳答案
0

这很正常,因为你用Distinct()方法时,默认的Comparer是EqualityComparer<T_ZJ_PostTouch>.Default 这个comparer,对于大部分引用类型,比较的是引用。而你自己的 OrgCodeComparer比较的是OrgCode字段。

奖励园豆:5
水牛刀刀 | 大侠五级 |园豆:6350 | 2012-07-25 17:40

谢谢!

江南_雾里看花 | 园豆:394 (菜鸟二级) | 2012-07-25 18:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册