DatagridView C#列的总和

时间:2018-05-31 14:12:27

标签: c# linq datagridview

您好我想知道如何根据另一列中的值获取列的总和。例如,我有一个像这样的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);
}

2 个答案:

答案 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);
        }