C# DataGridView如何对首次连续出现的同名列单元格求和?
实现DataGridView指定列组的首次连续求和并终止逻辑
假设你使用的是WinForms的DataGridView,以下是具体实现步骤和代码示例:
核心逻辑
- 从左到右遍历目标行的所有列
- 统计开头连续出现的apples/pears列的数值总和
- 当首次连续组结束(遇到非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
相关产品推荐
相关产品推荐

