我有一个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();
原文地址:https://www.jb51.cc/csharp/98976.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。