选择第一个独特的孩子

时间:2018-04-04 07:57:03

标签: c# linq

我需要明确地'按父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查询执行?

1 个答案:

答案 0 :(得分:7)

您可以使用GroupBy并选择每个组中的第一项:

List<Child> result = children.GroupBy(c => c.Parent.Id)
                             .Select(g => g.First())
                             .ToList();