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

本文关键字:项目 筛选 | 更新日期: 2023-09-27 18:32:24

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

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

有没有办法用单个 LINQ 语句来做到这一点?

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

您可以使用

GroupBy

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