c# - Linq lambda 表达式至少得到一个重复项和非重复项

标签 c# linq

我有一个列表:

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/

相关文章:

c# - 将一个按钮绑定(bind)到 3 个不同的 DataGrids,每个 DataGrids 在 TabControl 中

c# - 一些 Python 函数的 .NET 等价物

c# - 创建对象泛型类

c# - NHibernate QueryOver NullReferenceException

c# - 为什么要预先加载实体?

linq - 学习 Linq to Entities 的最快方法

c# - 将字符串拆分为数组

c# - 数据访问层(DAL)中的LINQ查询方法

c# - Linq 表达式获取 IList 中的所有项目,其中一个字段在另一个列表中

c# - 是否应该处置静态方法中的 ObjectContext?