我有一个列表:
List<Dev> devices= new List<Dev>(){
new Dev{ Add="5",Name="A" },
new Dev{ Add="5",Name="a" },
new Dev{ Add="9",Name="b" },
new Dev{ Add="6",Name="c" },
new Dev{ Add="9",Name="b" },
};
我想编写一个 Linq“Lambda 表达式”,它返回不重复的记录以及基于列表中“名称”的重复项中的第一条记录。查找重复项时也忽略大小写
预期输出:
Add=5, Name=A
Add=9, Name=b
Add=6, Name=c
查询我现在有什么(它返回重复的“名称”):
results.GroupBy(x => x.Name, StringComparer.OrdinalIgnoreCase)
.Where(g => g.Count() > 1)
.Select(g => g.Key)
.ToList();
最佳答案
你非常接近:与其选择 g.Key
,不如选择 g.First()
,然后删除按计数过滤:
var list = results.GroupBy(x => x.Name, StringComparer.OrdinalIgnoreCase)
.Select(g => g.First())
.ToList();
关于c# - Linq lambda 表达式至少得到一个重复项和非重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48138563/