不太清楚微软为啥给泛型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
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 ));