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

如何用单个LINQ表达式获取指定年份各月份列最大值并生成单行结果

用单个LINQ表达式实现指定年份月份数据最大值聚合

假设你的Volume类包含YEAR以及JAN_VOLUME到DEC_VOLUME这12个月份的数值属性,你可以通过单个LINQ表达式完成筛选+月份最大值聚合的操作,代码如下:

var monthlyMaxVolumes = volumes
    .Where(v => v.YEAR == maxYear)
    .Aggregate(
        // 初始化每个月份的最大值为对应数值类型的最小值
        new {
            JanMax = int.MinValue,
            FebMax = int.MinValue,
            MarMax = int.MinValue,
            AprMax = int.MinValue,
            MayMax = int.MinValue,
            JunMax = int.MinValue,
            JulMax = int.MinValue,
            AugMax = int.MinValue,
            SepMax = int.MinValue,
            OctMax = int.MinValue,
            NovMax = int.MinValue,
            DecMax = int.MinValue
        },
        // 遍历每条数据,逐个更新月份最大值
        (accumulator, current) => new {
            JanMax = Math.Max(accumulator.JanMax, current.JAN_VOLUME),
            FebMax = Math.Max(accumulator.FebMax, current.FEB_VOLUME),
            MarMax = Math.Max(accumulator.MarMax, current.MAR_VOLUME),
            AprMax = Math.Max(accumulator.AprMax, current.APR_VOLUME),
            MayMax = Math.Max(accumulator.MayMax, current.MAY_VOLUME),
            JunMax = Math.Max(accumulator.JunMax, current.JUN_VOLUME),
            JulMax = Math.Max(accumulator.JulMax, current.JUL_VOLUME),
            AugMax = Math.Max(accumulator.AugMax, current.AUG_VOLUME),
            SepMax = Math.Max(accumulator.SepMax, current.SEP_VOLUME),
            OctMax = Math.Max(accumulator.OctMax, current.OCT_VOLUME),
            NovMax = Math.Max(accumulator.NovMax, current.NOV_VOLUME),
            DecMax = Math.Max(accumulator.DecMax, current.DEC_VOLUME)
        });

代码说明:

  1. 先通过Where筛选出年份等于maxYear的所有数据;
  2. 用Aggregate方法做累积计算:
    • 初始值创建一个匿名对象,每个月份的最大值字段设为对应数值类型的最小值(如果是浮点型就用double.MinValue, decimal类型用decimal.MinValue);
    • 遍历每条筛选后的数据,用Math.Max对比当前累积的最大值和当前数据的月份值,更新累积对象的对应字段;
  3. 最终得到的monthlyMaxVolumes就是包含12个月份最大值的单行结果。

内容的提问来源于stack exchange,提问作者O.O

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 01:36:32