我有一个代表对象的简单类。它有 5 个属性(一个日期、两个小数、一个整数和一个字符串)。我有一个集合类,源自CollectionBase
,这是一个容器类,用于保存我的第一个类中的多个对象。
我的问题是,我想删除重复的对象(例如具有相同日期、相同小数、相同整数和相同字符串的对象)。我可以编写 LINQ 查询来查找和删除重复项吗?或者至少找到他们?
您可以使用以下命令删除重复项Distinct http://msdn.microsoft.com/en-us/library/bb338049.aspx操作员。
有两种重载 - 一种使用您类型的默认相等比较器(对于自定义类型,它将调用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() ) );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)