博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linq Distinct 去除重复数据
阅读量:6709 次
发布时间:2019-06-25

本文共 1249 字,大约阅读时间需要 4 分钟。

转载:

只可惜linq默认不支持.Distinct(p => p.ID);

试想如果能写成下面的样子,是不是更简单优雅:

var p1 = products.Distinct(p => p.ID);var p2 = products.Distinct(p => p.Name);

 使用一个简单的 lambda 作为参数,也符合 Linq 一贯的风格。

 

扩展方法:

public static IEnumerable
Distinct
(this IEnumerable
source, Func
keySelector, IEqualityComparer
comparer = EqualityComparer
.Default){ return source.Distinct(new CommonEqualityComparer
(keySelector, comparer));}
using System;using System.Collections.Generic;using System.Runtime.CompilerServices;using System.Linq;public class CommonEqualityComparer
: IEqualityComparer
{ private Func
keySelector; private IEqualityComparer
comparer; public CommonEqualityComparer(Func
keySelector, IEqualityComparer
comparer) { this.keySelector = keySelector; this.comparer = comparer; } public CommonEqualityComparer(Func
keySelector) : this(keySelector, EqualityComparer
.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)); }}

 

你可能感兴趣的文章
CyrusOne计划在美国德克萨斯建设大型数据中心园区
查看>>
暴风热点 要的不仅仅是免费WIFI
查看>>
MSR路由器的未来之路
查看>>
《C语言程序设计:问题与求解方法》——3.10节提高部分
查看>>
《数据库基础及实践技术——SQL Server 2008》一3.3 查看和设置数据库选项
查看>>
边缘计算将蚕食云计算,可能吗?
查看>>
《Linux内核修炼之道》——1.3 获取内核源码
查看>>
阿里云前端周刊 - 第 12 期
查看>>
GNOME 3.26 将对控制中心进行大改进
查看>>
《CCNP ROUTE (642-902 )认证考试指南》一第1章 CCNP考试中的规划任务
查看>>
名落孙山之后, Edge 浏览器发布一大波新功能
查看>>
树莓派使用 DHT11 温湿度传感器
查看>>
《高可用架构·中国初创故事(第3期)》一1.6 了解客户
查看>>
《大数据管理概论》一3.5 小结
查看>>
针对今天客户提出的问题IE8 浏览器文本模式变为杂项解决方法
查看>>
《深入理解Scala》——导读
查看>>
用Python开源机器人和5美元,我在Instagram上搞到了2500个真粉儿
查看>>
《树莓派开发实战(第2版)》——2.9 利用RDP远程控制树莓派
查看>>
《流量的秘密 Google Analytics网站分析与商业实战》一1.2 网站的衡量标准有何不同...
查看>>
《数据中心设计与运营实战》——2.5 应用层软件
查看>>