我需要明确地'按父ID选择每个项目的第一个,如下所示:
// 'children' is a collection of Child ordered by parent
var last = 0;
var result = new List<Child>();
foreach (var c in children)
{
if (c.Parent.Id != last)
{
result.Add(c);
last = c.Parent.Id;
}
}
如何将其作为Linq查询执行?
答案 0 :(得分:7)
您可以使用GroupBy
并选择每个组中的第一项:
List<Child> result = children.GroupBy(c => c.Parent.Id)
.Select(g => g.First())
.ToList();