C# 扩展方法——去重(Distinct)
2021-01-22 08:12
标签:调用 names blank cos comm ring ali key bool 其他扩展方法详见:https://www.cnblogs.com/zhuanjiao/p/12060937.html IEnumerable的Distinct扩展方法,当集合元素为对象时,可用于元素对象指定字段进行排重集 一、通过指定单个属性进行去重。 举例: var member = memberAll.Distinct(d => d.MemberID); // 按照MemberID进行排重,不区分大小写 var member = memberAll.Distinct(d => d.MemberID, StringComparer.CurrentCultureIgnoreCase);// 不区分大小写 两个参数的扩展方法,第二个参数有以下几种可选。 二、若是对多个属性去重如何实现呢? 思路:主要是去实现IEqualityComparer 具体实现参照https://www.zhangshengrong.com/p/JKN8Eqo2X6/ 因为对象在比较的时候,会先调用GetHashCode方法, 若HashCode不同 ,则对象不同,不会调用Equlas方法, 若HashCode相同,再调用Equlas方法进行比较 文章里面就是: 让GetHashCode方法返回常量,触发Equlas方法进行比较,Equlas里面写了自己所需要排重的属性进行判断 三、排重是否有其他方式可以实现? 有,memberAll.Where((m,i)=>memberAll.FindIndex(z=>z.MemberID== m.MemberID) == i) 另,GroupBy 可以实现 C# 扩展方法——去重(Distinct) 标签:调用 names blank cos comm ring ali key bool 原文地址:https://www.cnblogs.com/zhuanjiao/p/12082054.htmlusing System;
using System.Collections.Generic;
using System.Linq;
namespace CoSubject.Common.CommonExtensions
{
///
文章标题:C# 扩展方法——去重(Distinct)
文章链接:http://soscw.com/index.php/essay/45355.html