You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# LINQ如何按release_number分组获取每组最大year值

问题说明

现有列表包含如下结构的条目数据:

{ surname = surname_1, title = title_4, release_number = 111, year = 2021 }
{ surname = surname_1, title = title_1, release_number = 111, year = 2020 }
{ surname = surname_2, title = title_5, release_number = 222, year = 2021 }
{ surname = surname_2, title = title_2, release_number = 222, year = 2020 }
{ surname = surname_3, title = title_8, release_number = 222, year = 2022 }

需要使用C# LINQ实现:获取每个release_number对应的最大year值,期望输出结果为:

{ReleaseNumber = 111, Year = 2021}
{ReleaseNumber = 222, Year = 2022}
实现方案

首先定义和数据结构匹配的实体类,假设数据源为List<Record>类型,变量名为records:

public class Record
{
    public string Surname { get; set; }
    public string Title { get; set; }
    public int ReleaseNumber { get; set; }
    public int Year { get; set; }
}

核心实现逻辑是按release_number字段分组,对每个分组取year字段的最大值,有两种常见写法:

  • 方法语法(日常开发最常用)
var result = records
    .GroupBy(item => item.ReleaseNumber)
    .Select(group => new 
    {
        ReleaseNumber = group.Key,
        Year = group.Max(i => i.Year)
    })
    .ToList();
  • 查询表达式写法
var result = from item in records
             group item by item.ReleaseNumber into releaseGroup
             select new 
             {
                 ReleaseNumber = releaseGroup.Key,
                 Year = releaseGroup.Max(i => i.Year)
             };

逻辑说明

  • GroupBy会把ReleaseNumber相同的条目归为同一组,每组的Key属性就是对应的ReleaseNumber值
  • 对每个分组调用Max方法,传入取Year字段的选择器,就能得到当前分组下的最大年份
  • 上述代码输出的是匿名类型集合,属性和值完全匹配预期结果,如果需要强类型返回,直接把匿名类型替换为自定义的输出DTO类即可

内容的提问来源于stack exchange,提问作者Yura Solokha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 19:09:52