获取数据表列的总和

Hum*_*Ali 1 c# linq datatable ado.net

我在DataTable中有以下值

Affiliate Name | Call
---------------|-----
A              |   2
B              |   1  
B              |   0
A              |   3
Run Code Online (Sandbox Code Playgroud)

我怎样才能检索到的总数CallAffiliate Name“A”。在上面的示例中,它应该返回5。

foreach (DataRow row in dt.Rows)
{
    string CallsOffered = //Get count
}
Run Code Online (Sandbox Code Playgroud)

Fab*_*bio 5

您可以使用DataTable.Compute方法

var sumOfA = dt.Compute("Sum(Call)", "[Affiliate Name] = 'A'");
Run Code Online (Sandbox Code Playgroud)

或使用LINQ

var sumOfA = dt.AsEnumerable()
               .Where(dr => dr.Field<string>("Affiliate Name").Equals("A"))
               .Sum(dr => dr.Field<int>("Call"));
Run Code Online (Sandbox Code Playgroud)

如果您想获得Affiliate Name使用匿名类型的LINQ的所有值的调用总和

var results = dt.AsEnumerable()
                .GroupBy(dr => dr.Field<string>("Affiliate Name"))
                .Select((group, dr) => new 
                {
                    AffiliateName = group.Key,
                   CallsCount = group.Sum(dr.Field<int>("Call")))
                });

foreach(var result in results)
{
    // Use results
    Console.WriteLine($"{result.AffiliateName}: {result.CallsCount}");
}
Run Code Online (Sandbox Code Playgroud)