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