不太清楚微软为啥给泛型List提供了Distinct扩展, 却非要传递一个Compare型的参数, 为啥不是一个委托呢?
好麻烦啊, 只能实现那个接口...
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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
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 ));
2 delegate (自定义类型 x, 自定义类型 y)
3 {
4 if ( null != x && null != y)
5 return x.属性 == y.属性;
6 return false ;
7 }
8 ));