当项目具有相同名称时,筛选出最旧的项目

时间:2016-01-29 15:17:06

标签: c# linq

public class Foo
{
     public string Name {get; set;}
     public int Year {get; set;}
}

说我有一个Foo项目列表。 某些Foo项可能具有相同的名称。在这种情况下,我想过滤除了最新的Foo项目以外的所有名称。 (一个Foo项目不能具有相同的名称和相同的年份)

是否可以使用单个LINQ语句执行此操作?

1 个答案:

答案 0 :(得分:5)

您可以使用GroupBy

var result = items.GroupBy(foo => foo.Name)
                  .Select(g => g.OrderByDescending(foo => foo.Year).First())
                  .ToList();