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

C#控制台应用中处理CSV文件,按年份计算value字段均值

按年份分组计算Value平均值的实现方案

你可以利用LINQ的GroupBy方法结合DateTime的Year属性来完成分组和平均值计算,具体实现如下:

完整代码示例

using (var csv = new CsvReader(reader, config))
{
    var records = csv.GetRecords<info>().ToList();
    
    // 按年份分组并计算每组的value平均值
    var yearlyAverages = records
        .GroupBy(record => record.date.Year) // 提取date的年份作为分组键
        .Select(group => new 
        {
            Year = group.Key, // 分组对应的年份
            AverageValue = group.Average(r => r.value) // 计算当前组的value平均值
        })
        .ToList();
    
    return yearlyAverages;
}

public class info 
{   
    public int value { get; set; }   
    public DateTime date { get; set; } 
}

关键说明

  1. 提取年份:通过record.date.Year可以直接获取DateTime类型字段的年份值,这是分组的核心依据。
  2. 分组计算:
    • GroupBy将所有记录按年份归类到不同的分组中
    • Average方法对每个分组内的value字段计算平均值,结果为double类型
  3. 规范返回类型:如果需要更结构化的返回结果,可以自定义一个类:
public class YearlyAverage
{
    public int Year { get; set; }
    public double AverageValue { get; set; }
}

然后将Select部分修改为:

.Select(group => new YearlyAverage 
{
    Year = group.Key,
    AverageValue = group.Average(r => r.value)
})

注意事项

  • 确保CSV中的日期格式能被CsvReader正确解析为DateTime类型,如果有特殊格式,需要在config中配置对应的日期解析规则
  • 如果CSV中存在无效日期或空值,建议提前添加校验逻辑(比如过滤掉date无效的记录)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:30:57