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

多个Linq查询结果Concat后如何对重复分组的数值求和

解决方案

你当前的问题根源是:对每个DataGridView单独做了分组求和后直接拼接结果,相同分组在不同DataGridView中的统计结果自然会作为独立条目存在。只需对拼接后的所有统计结果做二次全局分组求和即可,也可以同时优化代码减少重复逻辑。

优化后完整代码

private void seriesettimanali()
{
    // 先把所有要统计的DataGridView放到集合里,避免重复写相同逻辑
    var allGrids = new List<DataGridView> { dataGridView1, dataGridView2, dataGridView3, dataGridView4, dataGridView5 };

    // 一次性提取所有Grid中符合要求的行数据,再统一分组求和
    var finalResult = allGrids
        // 遍历每个dgv,拿到所有行
        .SelectMany(grid => grid.Rows.Cast<DataGridViewRow>()
            // 过滤掉分组列为空的行
            .Where(row => row.Cells[7].Value != null)
            // 统一取出分组名和对应数量,不用每个dgv单独分组
            .Select(row => new { 
                Group = row.Cells[7].Value.ToString(), 
                Quantity = Convert.ToInt32(row.Cells[1].Value) 
            }))
        // 全局按分组名分组
        .GroupBy(item => item.Group)
        // 对每个分组的数量求和,得到最终结果
        .Select(g => new { Group = g.Key, Quantity = g.Sum(item => item.Quantity) })
        .ToList();

    dataGridView6.DataSource = finalResult;
}

最小改动方案

如果你不想调整原有写法,只需要在你现有代码的resultSum4之后加一段二次分组逻辑即可实现需求:

// 原有拼接逻辑不变,追加以下代码
var finalResult = resultSum4
    .GroupBy(x => x.Group)
    .Select(g => new { Group = g.Key, Sum = g.Sum(x => x.Sum) })
    .ToList();
dataGridView6.DataSource = finalResult;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 12:54:04