任何人都可以告诉我,在这些尝试通过Linq找到重复的名字和姓氏时我会搞砸了什么?
//尝试1
var duplicateName =
from o in people
from x in people
group o by new { Last= x.LastName?.Trim()?.ToUpperInvariant(), First=x.FirstName?.Trim()?.ToUpperInvariant() }
into g
where g.Count() > 1
select g;
//尝试2
var duplicateName =
people.GroupBy(x => new { Last= x.LastName?.Trim()?.ToUpperInvariant(), First=x.FirstName?.Trim()?.ToUpperInvariant() })
.Where(g=> g.Count() > 1)
.Select(y => y)
.ToList() ;
答案 0 :(得分:1)
第二次尝试几乎就是你想要的。但是你选择了分组。如果要选择分组中的对象,则应使用SelectMany
:
var duplicateName =
people.GroupBy(x => new { Last= x.LastName?.Trim()?.ToUpperInvariant(), First=x.FirstName?.Trim()?.ToUpperInvariant() })
.Where(g=> g.Count() > 1)
.SelectMany(y => y)
.ToList() ;