c# – 根据多个字段或列从列表中删除重复项

c# – 根据多个字段或列从列表中删除重复项,第1张

概述我有一个MyClass类型的列表 public class MyClass{ public string prop1 {} public int prop2 {} public string prop3 {} public int prop4 {} public string prop5 {} public string prop6 {} . 我有一个MyClass类型的列表
public class MyClass{   public string prop1 {}    public int prop2 {}    public string prop3 {}    public int prop4 {}    public string prop5 {}    public string prop6 {}    ....}

此列表将具有重复项.我想查找和删除此列表中prop1,prop2和prop3重复的项目.如果其他属性是重复的则无关紧要

这是我尝试过的不起作用.

List<MyClass> noDups = myClassList.GroupBy(d => new {d.prop1,d.prop2,d.prop3} ).Where(g => g.Count() > 1).Select(g=> g.Key);

我不想使用任何第三方工具.只有纯粹的linq.

解决方法 这将返回每个“类型”的一个项目(如一个区别)(所以如果你有A,A,B,C它将返回A,C)
List<MyClass> noDups = myClassList.GroupBy(d => new {d.prop1,d.prop3} )                                  .Select(d => d.First())                                  .ToList();

如果你只想要没有副本的元素(所以如果你有A,C它将返回B,C):

List<MyClass> noDups = myClassList.GroupBy(d => new {d.prop1,d.prop3} )                                  .Where(d => d.Count() == 1)                                  .Select(d => d.First())                                  .ToList();
总结

以上是内存溢出为你收集整理的c# – 根据多个字段或列从列表中删除重复项全部内容,希望文章能够帮你解决c# – 根据多个字段或列从列表中删除重复项所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1242568.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存