Distinct 扩展方法(按字段去重)

C#中实现列表去重的几种方法 然后,我们创建了一个包含重复元素的列表list,并创建了一个HashSet对象set,同时指定了自定义的比较器CustomEqualityComparer。在上述代码中,我们直接通过调用列表list的Distinct方法,返回一个去重后的IEnumerable对象,然后再调用ToList方法将其转换为列表distinctList。在C#编程中,我们经常需要对列表中的元素进行去重操作。本文将介绍一些常用的方法来实现C#中列表去重的功能,包括使用HashSet、Linq和自定义比较器等方法。 阅读详情
 public class Compare<T, C> : IEqualityComparer<T>
    {
        private Func<T, C> _getField;
        public Compare(Func<T, C> getField)
        {
            _getField = getField;
        }

public bool Equals(T x, T y)
        {
            return EqualityComparer<C>.Default.Equals(_getField(x), _getField(y));
        }

public int GetHashCode(T obj)
    {
        return EqualityComparer<C>.Default.GetHashCode(_getField(obj));
    }
}


public static class DistinctExtension
{
    /// <summary>
    /// 自定义 Distinct扩展方法
    /// </summary>
    /// <typeparam name="T">要去重的对象类</typeparam>
    /// <typeparam name="C">自定义去重的字段类型</typeparam>
    /// <param name="source">要去重的对象</param>
    /// <param name="getField">获取自定义去重字段的委托</param>
    /// <returns></returns>
    public static IEnumerable<T> DistinctByField<T, C>(this IEnumerable<T> source, Func<T, C> getField)
    {
        return source.Distinct(new Compare<T, C>(getField));
    }

}
C#--List--获取List中某个属性的所有值 并 去重复(方法一 lambda+ Distinct(),,方法二 lambda) 获取数据库查询的 实体类的列表中 ,某列的值(FACTORY_NAME),并且要去重复 。 。 推荐使用 方法一,推荐原因,请参考 C# List 根据对象属性去重的四种方法对比 List<Model.index_data> indexlist = new List<Model.index_data>(); //indexlist=数据库查询出来的列表; ... 阅读详情

相关推荐

通过CN3口直接控制台达伺服电机A2-M(二)

既然可以通过RS485与伺服驱动器进行通讯,那么就肯定可以控制转速 首先,需要了解下 ‘控制模式及控制命令输入源设定’ 依据以上资料,速度控制模式有两种,S和SZ模式,分别对应模式选择中的02和04,对P1-01的地址0102进行写地址操作即可实现,一开始我使用了S模式,但是这个模式在寸动模式下会自动运转,不符合我控制的要求,后面改用SZ模式,就可以实现零速度。 使用串口工具发送命令:“01 06 01 02 00 04 28 35”即可以实现设置,设置完成后可以手动在伺服驱动器的按键面板上进行确

HKing_evil的博客 6825

【C#】list 去重(转载)

一、查阅文档 Enumerable.Distinct 方法是常用的LINQ扩展方法,属于System.Linq的Enumerable方法,可用于去除数组、集合中的重复元素,还可以自定义去重的规则。 有两个重载方法: // // 摘要: // 通过使用默认的相等比较器对值进行比较返回序列中的非重复元素。 // // 参数: // source: // 要从中移除重复元素的序列。 .

cillent_boy的专栏 6296

QT | QT打包生成单个EXE文件

1.以release方式运行程序 2.在release文件夹中找到.exe文件 如果没有找到exe,可能是因为在项目中勾选了shadow build,你可以在构建目录中找到exe 3.将exe放在一个新建的文件夹中,因为待会儿会生成很多dll文件 4.点击电脑左下角搜索QT,打开Qt 5.8 for Desktop (MinGQW 5.3.0 32bit) 5.进入刚刚新建的文件夹,输入wi...

⊳ideal world⊲~ヽ(゚︺゚)Hi 1238

C# List去重的三种方法

C# List去重的三种方法 一、如果是基础数据类型,可以使用Distinct()方法 二、若是复杂类型(如:实体类), 1、则Distinct()方法无效,但是可以使用它的重载方法,不过需要自己重写接口。 2、可以使用GroupBy() 3、users.Where((x,i)=>users.FindIndex(z=>z.name == x.name) == i) 去重,这条语句返回结...

sinat_31773153的博客 9183

Modbus协议全家桶(C#纯原生完整版):ModbusRTU + ModbusTCP + ModbusASCII 协议规范+完整封装+工业级实战

你已经掌握了C#串口/网口原生核心API和工业通信协议本质,而今天的主角Modbus协议,是工业通信领域绝对的王者、通用的标准、入门的必修课,没有之一。凡是做工业通信开发,必会Modbus协议;市面上99%的工业设备(PLC、变频器、温控仪、传感器、流量计、扫码枪)都原生支持Modbus协议。Modbus协议不是单一协议,而是一个「协议家族」,我们常说的就是这个家族的三大核心成员,也是工业现场的全部Modbus应用形态。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 562

如何在 Ubuntu 24.04 LTS 上安装 SSH 服务器?

Ubuntu是一个基于Debian的开源Linux操作系统,由Canonical Ltd.开发和维护。Ubuntu致力于提供用户友好、稳定且安全的操作系统环境,适用于个人用户、企业和服务器等不同场景。Ubuntu 24.04 LTS是Ubuntu发布的一个长期支持版本,LTS代表长期支持(Long Term Support)。这意味着Ubuntu 24.04 LTS将获得长达5年的安全更新和维护支持,使其成为企业和个人用户的理想选择。

网络技术联盟站 5888

C# 数组Linq 的三种去重方式(Distinct)

C# 数组Linq 的三种去重方式(Distinct)

m0_48144113的博客 3770

IP-guard发布新版本4.87.2241.0

IP-guard发布了新版本4.87.2241.0,用户可通过提供的下载地址获取完整安装包和升级包。下载后,用户需联系厂家申请测试序列号以进行安装和使用。IP-guard是一款专注于企业文件加密、文档加密系统、防泄密软件、数据安全的软件。

IP-Guard专栏 1531

c# list集合根据某个字段去重_完美解决c# distinct不好用的问题

当一个结合中想根据某一个字段做去重方法时使用以下代码IQueryable 继承自IEnumerable先举例:#region linq to objectList peopleList = new List();peopleList.Add(new People { UserName = "zzl", Email = "1" });peopleList.Add(new People { UserN...

weixin_39996035的博客 2798

【AI大模型】DeepSeek + Kimi 高效制作PPT实战详解

AI赋能,使用DeepSeek 高效制作PPT实战详解

congge 1万+

【2026 Science Robotics】Learning realistic lip motions for humanoid face robots

哥伦比亚大学Yuhang Hu团队提出了一种创新方法,通过10自由度软体嘴唇设计和自监督学习算法解决仿人机器人嘴唇动作僵硬问题。研究采用变分自编码器(VAE)和面部动作Transformer(FAT)模型,将语音信号转化为机器人可执行的电机指令。实验表明,该方法在多语言测试中表现优异,用户偏好率达62.5%,显著提升了口型同步的真实感和流畅度。该成果突破了传统机械结构的限制,为跨越"恐怖谷效应"提供了有效解决方案。

志在山顶的人,不会贪念山腰的风景 308

java list 某个字段_如何实现java8 list按照元素的某个字段去重

list 按照元素的某个字段去重@Data@AllArgsConstructor@NoArgsConstructorpublic class Student {private Integer age;private String name;}测试数据List studentList = Lists.newArrayList();studentList.add(new Student(28, "ri...

weixin_42497839的博客 1778

UDS诊断服务基础详解之七-31服务

本节内容主要是讲解诊断服务中的31服务,包含31服务的使用场景,请求报文格式,响应报文格式,以及举例对31服务进行相关的说明

车载网络小D的博客 5629

java list 字段去重_如何实现java8 list按照元素的某个字段去重

list 按照元素的某个字段去重@data@allargsconstructor@noargsconstructorpublic class student {private integer age;private string name;}测试数据list studentlist = lists.newarraylist();studentlist.add(new student(28, "ri...

weixin_28765561的博客 603

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

java list 元素去重_小猿圈Java开发之list按照元素某个字段去重详解

小猿圈Java老师给大家分享一篇关于如何实现Java8中list按照元素的某个字段去重的详细介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们一起来看一下吧。list按照元素的某个字段去重@Data@AllArgsConstructor@NoArgsConstructorpublic class Student {private Integer age;pr...

weixin_32951341的博客 205

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java list 元素去重_如何实现java8 list按照元素的某个字段去重

list 按照元素的某个字段去重@Data@AllArgsConstructor@NoArgsConstructorpublic class Student {private Integer age;private String name;}测试数据List studentList = Lists.newArrayList();studentList.add(new Student(28, "ri...

weixin_40008946的博客 59

小猿圈Java开发之list按照元素某个字段去重详解

小猿圈Java老师给大家分享一篇关于如何实现Java8中list按照元素的某个字段去重的详细介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们一起来看一下吧。 ...

338

去重 list_小猿圈Java开发之list按照元素某个字段去重详解

小猿圈Java老师给大家分享一篇关于如何实现Java8中list按照元素的某个字段去重的详细介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们一起来看一下吧。list按照元素的某个字段去重@Data@AllArgsConstructor@NoArgsConstructorpublic class Student {private Integer age;pr...

weixin_39915721的博客 113

C#-Linq扩展方法DistinctBy

public static class LinqExtensions { public static IEnumerable<T> DistinctBy<T, TKey>(this IEnumerable<T> items, System.Func<T, TKey> property) { ...

weixin_30695195的博客 864

Core源码(二) Linq的Distinct扩展

先贴源码地址 https://github.com/dotnet/corefx/tree/master/src/System.Linq/src .NET CORE很大一个好处就是代码的开源,你可以详细的查看你使用类的源代码,并学习微软的写法和实现思路。我们这个系列熟悉基本类库是一个目的,另一个目的就是学习微软的实现思路和编程方法。 今天我们就单独讨论的问题是linq...

weixin_30810239的博客 239

c#对象集合去重_C# List集合去重操作注意点

今天调试代码时发现list的distinct方法在对引用类型操作时并没有去重,后来查阅资料发现list去重操作对象集合时比较的是对象的一个个引用地址,因为集合里的对象都是一个个单独的实例,所以并不会把内容相同的元素去掉,要想真正去重还是要自己写方法筛选,但是值类型集合的就可以直接操作,包括Unoin,Intersect方法。当默认distinct方法不满足需求时,可以使用他的重载方法自定义一个比较...

weixin_36331429的博客 604

arcgis python 字段某个字段截断_小猿圈Java开发之list按照元素某个字段去重详解...

小猿圈Java老师给大家分享一篇关于如何实现Java8中list按照元素的某个字段去重的详细介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们一起来看一下吧。list按照元素的某个字段去重@Data@AllArgsConstructor@NoArgsConstructorpublic class Student {private Integer age;pr...

weixin_39760650的博客 166

Linq 提示多列的不重复字段

Linq Distinct Linq 用来实现集合(List, DataTable等) 的二次操作十分简便,这里介绍下用 Linq 对集合进行 Distinct 操作的几种方法。0. 准备数据: 1. 使用GroupBy:对需要Distinct的字段进行分组,取组内的第一条记录这样结果就是Distinct的数据了。 view plain Con...

diaochan6425的博客 227

完美解决c# distinct不好用的问题

当一个结合中想根据某一个字段做去重方法时使用以下代码 IQueryable 继承自IEnumerable 先举例: #region linq to object List<People> peopleList = new List<People>(); peopleList.Add(new People { UserName = "zzl", Email = "1" }); peopleList.Add(new People { UserName = "zzl", Email =

chinaherolts2008的博客 1980
上一篇: Linq 动态排序(Reflection,Expression)要点记录
下一篇: React 指南
stoneLSL
博客等级 码龄10年 5粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值