现在的位置: 首页 > 综合 > 正文

C# List Distinct

2013年04月18日 ⁄ 综合 ⁄ 共 932字 ⁄ 字号 评论关闭

不太清楚微软为啥给泛型List提供了Distinct扩展, 却非要传递一个Compare型的参数, 为啥不是一个委托呢?
好麻烦啊, 只能实现那个接口...

代码

 1 #region 过滤重复数据
 2 public delegate bool EqualsComparer<T>(T x, T y);
 3 /// <summary>
 4 /// 过滤重复数据
 5 /// </summary>
 6 public class Comparint<T> : IEqualityComparer<T>
 7 {
 8     private EqualsComparer<T> ec;
 9     public Comparint() { }
10     public Comparint(EqualsComparer<T> e)
11     {
12         this.ec = e;
13     }
14     #region IEqualityComparer<BudgetBE> 成员
15 
16     public bool Equals(T x, T y)
17     {
18         if (null != this.ec)
19             return this.ec(x, y);
20         else
21             return false;
22     }
23 
24     public int GetHashCode(T obj)
25     {
26         return obj.ToString().GetHashCode();
27     }
28 
29     #endregion
30 }
31 #endregion

 

使用时:

1 list.Distinct(new Comparint<自定义类型>(
2     delegate (自定义类型 x, 自定义类型 y)
3     {
4         if (null != x && null != y)
5             return x.属性 == y.属性;
6         return false;
7     }
8 ));

 

 

抱歉!评论已关闭.