Linq lambda 表达式获取至少一个重复项和非重复项

Dot*_*Dev 3 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" },

};
Run Code Online (Sandbox Code Playgroud)

我想编写一个 Linq“Lambda 表达式”,它返回不重复的记录,以及基于列表中“名称”的重复记录中的第一条记录。查找重复项时也忽略大小写

预期输出:

Add=5, Name=A
Add=9, Name=b
Add=6, Name=c
Run Code Online (Sandbox Code Playgroud)

查询我现在拥有的内容(它返回重复的“名称”):

results.GroupBy(x => x.Name, StringComparer.OrdinalIgnoreCase)
                                  .Where(g => g.Count() > 1)
                                  .Select(g => g.Key)
                                  .ToList();    
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

您非常接近:而不是 pick g.Key, pick g.First(),并按计数删除过滤:

var list = results.GroupBy(x => x.Name, StringComparer.OrdinalIgnoreCase)
                  .Select(g => g.First())
                  .ToList();
Run Code Online (Sandbox Code Playgroud)