您好我想知道如何根据另一列中的值获取列的总和。例如,我有一个像这样的DatagridView
User Value to sum
-------------------
User1 10
-------------------
User1 15
-------------------
User2 20
-------------------
User3 30
我想知道如何获得每个用户的总和。
预期输出
User1: 25
User2: 20
User3: 30
到目前为止,我已经获得了获取所有用户总和的代码,但我不知道每个用户都很热。
先谢谢大家。
for (int i = 0; i < dataGridView2.Rows.Count-1; i++)
{
total += Convert.ToInt32(dataGridView2.Rows[i].Cells[ColumnN].Value);
}
答案 0 :(得分:1)
您可以使用此查询:
var userSums = dataGridView2.Rows.Cast<DataGridViewRow>()
.GroupBy(row => row.Cells[0].Value.ToString())
.Select(g => new { User = g.Key, Sum = g.Sum(row => Convert.ToInt32(row.Cells[1].Value)) });
答案 1 :(得分:0)
如果您将数据作为对列表提取,则可以使用以下代码:
var data = new List <KeyValuePair<string, int>>()
{
new KeyValuePair<string, int>( "User1", 10 ),
new KeyValuePair<string, int>( "User1", 15 ),
new KeyValuePair<string, int>( "User2", 20 ),
new KeyValuePair<string, int>( "User3", 30 )
};
var res = data.GroupBy(x => x.Key);
foreach (var item in res)
{
var user = item.ToList();
var sum = item.Sum(x => x.Value);
Console.WriteLine(user[0].Key + " " + sum);
}