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

如何使用LINQ查询为DataGridView分组数据添加占比百分比计算

LINQ 分组统计新增百分比列实现方案

直接分两步执行查询即可,既避免重复遍历DataGridView数据源,也方便处理边界异常:

// 第一步:完成分组求和,转为List避免后续重复枚举
var groupSums = dataGridView1.Rows.Cast<DataGridViewRow>()
          .Where(row => row.Cells[8].Value != null)
        .GroupBy(row => row.Cells[8].Value.ToString()) 
        .Select(g => new { Gruppo = g.Key, Serie = g.Sum(row => Convert.ToInt32(row.Cells[2].Value)) })
        .ToList();

// 计算所有分组Serie总和,加零值判断避免除零错误
int total = groupSums.Sum(x => x.Serie);

// 第二步:新增百分比列,可自行调整Math.Round的参数修改保留小数位数
var result = groupSums.Select(g => new 
{
    g.Gruppo,
    g.Serie,
    // 若需要数值类型而非格式化字符串,可去掉字符串拼接和%后缀
    Percentage = total == 0 ? "0%" : $"{Math.Round((double)g.Serie / total * 100, 2)}%"
}).ToList();

运行结果参考:
运行结果示例

可选优化点:

  • 若对精度要求高,可将计算中的double替换为decimal,避免浮点运算误差
  • 若需要直接绑定到控件展示,可将匿名类替换为自定义实体类,方便后续取值操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 20:39:04