C# 循环遍历DataGridView并在选中行的位置添加值

C# 循环遍历DataGridView并在选中行的位置添加值,c#,C#,我有一个C应用程序和DataGridView,我可以绑定到数据源或动态加载数据,但与我需要做的事情无关 我有三个专栏。第一列是一个复选框,后面是一个ID列,该列不是唯一的,可以包含重复项,然后是一个金额列 我需要将数据加载到单独的行中,这样在填充DataGridView之前我就不想积累数据集,因为用户将选择要标记的值,所以-我想在DataGridView中循环,对于所有选中的行,积累或汇总ID相同的amount列 下面是一个示例数据。 身份证金额 1 50.25 2 15.20

我有一个C应用程序和DataGridView,我可以绑定到数据源或动态加载数据,但与我需要做的事情无关

我有三个专栏。第一列是一个复选框,后面是一个ID列,该列不是唯一的,可以包含重复项,然后是一个金额列

我需要将数据加载到单独的行中,这样在填充DataGridView之前我就不想积累数据集,因为用户将选择要标记的值,所以-我想在DataGridView中循环,对于所有选中的行,积累或汇总ID相同的amount列

下面是一个示例数据。 身份证金额 1 50.25 2 15.20 3 66.95 1 12.01 3 15.15 185.27

如果我们假设检查了ID 1的前两条记录,那么我希望遍历DataGridView并将金额相加,并为所有检查的行设置一个金额 但在这种情况下,ID为150.25+12.01=62.26

有什么建议吗


提前感谢您。

如果您有LINQ,那么在没有任何可用代码的情况下,这些代码可能会起作用。显然,它需要为您自己的代码进行修改,但想法是存在的。您可以从中获得每个分组的总和

ListOfDataRows.Where(x => x.Checked)
    .GroupBy(x=>x.ColumnWithId)
    .Sum(x => x.ColumnWithValue);

您可以使用LINQ进行所有计算:

var summedRows = yourDataGridView
    .Cast<DataGridViewRow>()
    .Where(r => (bool)r.Cells[0].Value == true) 
    .GroupBy(r => r.Cells[1].Value)
    .Select(g => new 
        { 
            Id = g.Key, 
            Sum = g.Sum(r => (double)r.Cells[2].Value) 
        }
    );

你在这里有什么问题?在网格的行集合或备份数据源上循环应该可以正常工作。
var summedRows = yourDataGridView
    .Cast<DataGridViewRow>()
    .Take(yourDataGridView.Rows.Count - 1)
    // rest same as above