1
///
<summary>
2 /// 根据字段过滤重复的数据
3 /// </summary>
4 /// <typeparam name="T"></typeparam>
5 public class Comparint<T> : IEqualityComparer<T> where T : class, new()
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 }
2 /// 根据字段过滤重复的数据
3 /// </summary>
4 /// <typeparam name="T"></typeparam>
5 public class Comparint<T> : IEqualityComparer<T> where T : class, new()
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 }