LINQ中使用Distinct去除重复的对象
2018-01-03 16:44
330 查看
.net中自带的比较器Compare是值类型比较,要想比较对象,即引用类型.我们需要重写比较器.
新建RefComparer.cs类
创建一个委托,用于传入需要比较的对象
public delegate bool EqualsComparer<T>(T x, T y);
然后重写Equals和GetHashCode方法即可
具体代码如下
public delegate bool EqualsComparer<T>(T x, T y);
/// <summary>
/// 引用类型比较器
/// </summary>
/// <typeparam name="T"></typeparam>
public class RefComparer<T> : IEqualityComparer<T>
{
private EqualsComparer<T> comparer;
public RefComparer(EqualsComparer<T> equalsComparer)
{
this.comparer = equalsComparer;
}
public bool Equals(T x, T y)
{
if (this.comparer != null)
return this.comparer(x, y);
else
return false;
}
public int GetHashCode(T obj)
{
return obj.ToString().GetHashCode();
}
}
新建RefComparer.cs类
创建一个委托,用于传入需要比较的对象
public delegate bool EqualsComparer<T>(T x, T y);
然后重写Equals和GetHashCode方法即可
具体代码如下
public delegate bool EqualsComparer<T>(T x, T y);
/// <summary>
/// 引用类型比较器
/// </summary>
/// <typeparam name="T"></typeparam>
public class RefComparer<T> : IEqualityComparer<T>
{
private EqualsComparer<T> comparer;
public RefComparer(EqualsComparer<T> equalsComparer)
{
this.comparer = equalsComparer;
}
public bool Equals(T x, T y)
{
if (this.comparer != null)
return this.comparer(x, y);
else
return false;
}
public int GetHashCode(T obj)
{
return obj.ToString().GetHashCode();
}
}
相关文章推荐
- Linq List<T>.Distinct() 去除对象重复
- Oracle使用row_number() over (partition order by)和DISTINCT去除重复记录
- C# 使用String.Join 和 Distinct 方法 去除字符串中重复字符
- linq Distinct 去除重复数据
- Hibernate用Criteria查询时使用Distinct方法去除重复数据
- linq 中Distinct去除重复数据
- FCL应用技巧之------使用List<T>的Distinct()去除重复元素
- LINQ 中使用 Distinct 的 Compare过滤重复的字段
- 使用Linq 来解决Datatable 去除数据重复
- 使用map巧妙去除集合中重复的对象
- Linq使用Distinct删除重复数据时如何指定所要依据的成员属性zz
- 光脚丫学LINQ(023):使用SQLMetal将对象模型生成为外部映射文件
- 第四条-避免使用重复的对象
- 使用对象封装ajax重复调用的方法
- MySQL DISTINCT语句去除重复记录数据
- Linq 利用Except 去除重复数据并返回唯一数据( IEqualityComparer扩展)
- 如何很好的使用Linq的Distinct方法
- LinkedList 去除集合中自定义对象的重复值(对象的成员变量值都相同)
- mysql 去除重复 Select中DISTINCT关键字的用法
- 对象转换成json串时,将null属性去除;以及枚举类的使用