如何在LINQ(到数据集)中计算DataTable列的总和?

38

我刚开始学习 LINQ,并希望将其应用到我的代码中。我知道如何通过“Foreach”遍历行或在特定列上执行 compute.sum 来计算 DataTable 的列和。那么,如何使用 LINQ to DataSet 实现相同的功能呢?

2个回答

88

如果未指定类型(将int替换为正确的数据类型):

 var sum = table.AsEnumerable().Sum(x=>x.Field<int>(3));
或:
 var sum = table.AsEnumerable().Sum(x=>x.Field<int>("SomeProperty"));
如果输入:
 var sum = table.Sum(x=>x.SomeProperty);

2
请注意,您需要 System.Data.DataSetExtensions 程序集才能使上述内容正常工作。 - kervin
1
@kervin:另外,你需要确保在代码文件的顶部加入以下内容:using System.Linq; - JohnB
只是为了理解,如果我没错的话,当你说“typed”和“un-typed”时,是指asp mvc中的类型视图和非类型视图,我的意思是我们创建的ViewModel类吗? - Shaiju T

2

如果您的数据字段是整数

var sum = TableData.Sum(x => x.FieldName);

如果您的数据字段是字符串,则需要将其解析为整数。
var sum = TableData.Sum(x => Int32.Parse(x.FieldName));

如果您的数据字段是字符串,并且您想将结果存储为字符串

var sum = TableData.Sum(x => Int32.Parse(x.FieldName)).ToString();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接