IList.Distinct() 根据字段过滤重复的数据

根据网上的例子修改的,记录一下。 IList.Distinct(new Comparint("ID","Name"));
 1      ///   <summary>
 2       ///  根据字段过滤重复的数据
 3       ///   </summary>
 4       ///   <typeparam name="T"></typeparam>
 5       public  class Comparint<T> : IEqualityComparer<T>  where T :  classnew()
 6     {
 7          private  string[] comparintFiledName = { };
 8 
 9          public Comparint() { }
10          public Comparint( params  string[] comparintFiledName)
11         {
12              this.comparintFiledName = comparintFiledName;
13         }
14 
15          bool IEqualityComparer<T>.Equals(T x, T y)
16         {
17              if (x ==  null && y ==  null)
18             {
19                  return  false;
20             }
21              if (comparintFiledName.Length ==  0)
22             {
23                  return x.Equals(y);
24             }
25              bool result =  true;
26              var typeX = x.GetType(); // 获取类型
27               var typeY = y.GetType();
28              foreach ( var filedName  in comparintFiledName)
29             {
30                  var xPropertyInfo = ( from p  in typeX.GetProperties()  where p.Name.Equals(filedName)  select p).FirstOrDefault();
31                  var yPropertyInfo = ( from p  in typeY.GetProperties()  where p.Name.Equals(filedName)  select p).FirstOrDefault();
32 
33                 result = result
34                     && xPropertyInfo !=  null && yPropertyInfo !=  null
35                     && xPropertyInfo.GetValue(x,  null).ToString().Equals(yPropertyInfo.GetValue(y,  null));
36             }
37              return result;
38         }
39          int IEqualityComparer<T>.GetHashCode(T obj)
40         {
41              return obj.ToString().GetHashCode();
42         }
43     }

转载于:https://www.cnblogs.com/juson/archive/2012/04/01/2428021.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值