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

C# DataGridView如何对首次连续出现的同名列单元格求和?

实现DataGridView指定列组的首次连续求和并终止逻辑

假设你使用的是WinForms的DataGridView,以下是具体实现步骤和代码示例:

核心逻辑

  1. 从左到右遍历目标行的所有列
  2. 统计开头连续出现的apples/pears列的数值总和
  3. 当首次连续组结束(遇到非apples/pears的列)后,继续遍历,一旦再次碰到列名为apples的列,立即终止循环

代码示例

// 假设你的DataGridView名为dataGridView1,且确定有至少一行数据
var targetRow = dataGridView1.Rows[0];
decimal sum = 0;
bool isFirstGroupActive = true; // 标记是否在统计首次连续组

foreach (DataGridViewColumn col in dataGridView1.Columns)
{
    // 获取当前单元格的值,处理空值或非数值情况
    if (!decimal.TryParse(targetRow.Cells[col.Name].Value?.ToString(), out decimal cellValue))
        cellValue = 0;

    if (isFirstGroupActive)
    {
        // 属于首次连续组的列,累加数值
        if (col.Name.Equals("apples", StringComparison.OrdinalIgnoreCase) || 
            col.Name.Equals("pears", StringComparison.OrdinalIgnoreCase))
        {
            sum += cellValue;
        }
        else
        {
            // 首次连续组结束,切换标记
            isFirstGroupActive = false;
        }
    }
    else
    {
        // 首次组已结束,检查是否遇到apples,遇到则终止循环
        if (col.Name.Equals("apples", StringComparison.OrdinalIgnoreCase))
        {
            break;
        }
        // 其他列直接跳过
    }
}

// sum即为最终求和结果
Console.WriteLine($"首次连续组求和结果:{sum}");

补充说明

  • 用StringComparison.OrdinalIgnoreCase是为了兼容列名大小写差异,若列名大小写严格匹配可移除该参数
  • 数值解析采用decimal.TryParse避免格式错误异常,可根据实际数据类型替换为int.TryParse或double.TryParse
  • 若使用WPF的DataGrid,只需将DataGridView替换为DataGrid,调整单元格值的获取逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:09:29