linq Distinct 去除重复数据
数据 重复 去除 LinQ Distinct
2023-09-14 08:57:24 时间
转载:http://www.cnblogs.com/ldp615/archive/2011/08/01/distinct-entension.html
只可惜linq默认不支持.Distinct(p => p.ID);
试想如果能写成下面的样子,是不是更简单优雅:
var p1 = products.Distinct(p => p.ID); var p2 = products.Distinct(p => p.Name);
使用一个简单的 lambda 作为参数,也符合 Linq 一贯的风格。
扩展方法:
public static IEnumerable<T> Distinct<T, V>(this IEnumerable<T> source, Func<T, V> keySelector, IEqualityComparer<V> comparer = EqualityComparer<V>.Default) { return source.Distinct(new CommonEqualityComparer<T, V>(keySelector, comparer)); }
using System; using System.Collections.Generic; using System.Runtime.CompilerServices; using System.Linq; public class CommonEqualityComparer<T, V> : IEqualityComparer<T> { private Func<T, V> keySelector; private IEqualityComparer<V> comparer; public CommonEqualityComparer(Func<T, V> keySelector, IEqualityComparer<V> comparer) { this.keySelector = keySelector; this.comparer = comparer; } public CommonEqualityComparer(Func<T, V> keySelector) : this(keySelector, EqualityComparer<V>.Default) { } public bool Equals(T x, T y) { return comparer.Equals(keySelector(x), keySelector(y)); } public int GetHashCode(T obj) { return comparer.GetHashCode(keySelector(obj)); } }
相关文章
- kettle进行数据迁移遇到的问题
- Python unittest+DDT实现的数据驱动测试
- Java实现 LeetCode 442 数组中重复的数据
- Entity Framework CodeFirst数据迁移
- PHP去除重复的数组数据
- SQL疑难杂症【4 】大量数据查询的时候避免子查询
- 去除DataTable重复数据的三种方法(转)
- 查找数据库中重复的值的数据,having的使用,count(1),sum等聚会函数
- spss-数据清洗-处理重复数据
- spring boot @RequestBody数据传递及解析
- sql中去除重复的数据 select distinct * from table
- uni-app:使用uni-list显示列表数据之三:上拉加载更多(hbuilderx 3.6.18)
- C# 移除数组中重复数据
- SAP C4C客户主数据重复检查和清洗实现
- 要求从表A查数据插入到表B中,并且要求如果表A中已存在的数据,就不要重复插入
- SAP UI5 应用开发教程之九十三 - 基于 JSONModel 数据模型的列表控件显示数据的深入讨论试读版
- 设计网页录入信息与自己定义server数据接收
- 【SQL干货】删除重复数据记录
- 增量数据,如果下次增量数据存在重复数据,如何解决。
- SQL Sever — 查询前10%的数据、查询并参与计算显示出数据、查询前10行数据、多重升序降序查询、去掉重复值、替换列名显示
- 开箱即用的ChatGPT替代模型,还可训练自己数据