gpt4 book ai didi

c# - 如何使用 LINQ 查找和删除集合中的重复对象?

转载 作者:太空狗 更新时间:2023-10-29 20:00:40 25 4
gpt4 key购买 nike

我有一个表示对象的简单类。它有 5 个属性(一个日期、2 个小数、一个整数和一个字符串)。我有一个派生自 CollectionBase 的集合类,它是一个容器类,用于保存我的第一个类中的多个对象。

我的问题是,我想删除重复的对象(例如具有相同日期、相同小数、相同整数和相同字符串的对象)。是否有我可以编写的 LINQ 查询来查找和删除重复项?或者至少找到它们?

最佳答案

您可以使用 Distinct 删除重复项运营商。

有两个重载 - 一个使用您的类型的默认相等比较器(对于自定义类型将调用类型上的 Equals() 方法)。第二个允许您提供自己的相等比较器。它们都返回一个新序列,代表您没有重复的原始集。 两个重载实际上都不会修改您的初始集合 - 它们都返回一个排除重复项的新序列。

如果你只想找到重复的,你可以使用GroupBy这样做:

var groupsWithDups = list.GroupBy( x => new { A = x.A, B = x.B, ... }, x => x ) 
.Where( g => g.Count() > 1 );

从类似 IList<> 的内容中删除重复项你可以这样做:

yourList.RemoveAll( yourList.Except( yourList.Distinct() ) );

关于c# - 如何使用 LINQ 查找和删除集合中的重复对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3239523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com