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

在C#中使用Linq Lambda按月份分组统计水果数据

在C#中使用Linq Lambda按月份分组统计水果数据

嗨,我来帮你搞定按月份分组统计水果数据的需求!首先得提个关键点:按月份分组时最好把年份也带上,不然不同年份的1月会被混在一起,统计结果就不准了。

首先,我们可以先定义一个类来存储每个月份的统计结果,这样后续处理和展示数据会更清晰:

public class MonthlyFruitStats
{
    public int Year { get; set; }
    public int Month { get; set; }
    public int TotalApple { get; set; }
    public int TotalPear { get; set; }
    public int TotalOrange { get; set; }
    public int TotalBanana { get; set; }
    public int TotalCherry { get; set; }
    public int TotalAvacado { get; set; }
    public int TotalKiwi { get; set; }
}

接下来就可以用Linq Lambda实现分组统计了,核心思路是先按年份+月份分组,再对每个分组里的每种水果数量求和:

// 假设你已经通过Json.Net反序列化得到了json这个List<Fruit>对象
var monthlyStats = json
    .GroupBy(f => new { f.Date.Year, f.Date.Month }) // 按年份和月份组合分组
    .Select(g => new MonthlyFruitStats
    {
        Year = g.Key.Year,
        Month = g.Key.Month,
        TotalApple = g.Sum(f => f.Apple),
        TotalPear = g.Sum(f => f.Pear),
        TotalOrange = g.Sum(f => f.Orange),
        TotalBanana = g.Sum(f => f.Banana),
        TotalCherry = g.Sum(f => f.Cherry),
        TotalAvacado = g.Sum(f => f.Avacado),
        TotalKiwi = g.Sum(f => f.Kiwi)
    })
    .OrderBy(s => s.Year) // 先按年份排序
    .ThenBy(s => s.Month) // 再按月份排序
    .ToList();

简单拆解下这段代码:

  • GroupBy用匿名类型作为分组键,保证同一年同一月的数据被分到一组,避免跨年份的月份混淆;
  • Select对每个分组做聚合计算,把每种水果的总数统计出来,封装到我们定义的统计类里;
  • 最后的排序是为了让结果按时间顺序排列,看起来更直观。

如果你嫌定义统计类麻烦,也可以直接用匿名类型存储结果,写法更快捷:

var monthlyStats = json
    .GroupBy(f => new { f.Date.Year, f.Date.Month })
    .Select(g => new
    {
        Year = g.Key.Year,
        Month = g.Key.Month,
        TotalApple = g.Sum(f => f.Apple),
        TotalPear = g.Sum(f => f.Pear),
        TotalOrange = g.Sum(f => f.Orange),
        TotalBanana = g.Sum(f => f.Banana),
        TotalCherry = g.Sum(f => f.Cherry),
        TotalAvacado = g.Sum(f => f.Avacado),
        TotalKiwi = g.Sum(f => f.Kiwi)
    })
    .OrderBy(s => s.Year)
    .ThenBy(s => s.Month)
    .ToList();

这样处理后,你就能得到每个月份的水果总量统计结果啦,按需选择自定义类或匿名类型即可。

备注:内容来源于stack exchange,提问作者Habip Oğuz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 11:22:47