聚合函数Sum()和Type:String的使用无效

Xav*_*nis 2 c# datatable

我有一个数据表,一列包含int值.我没有使用任何数据类型指定列.当我执行以下操作时.

object sum = dttest.Compute("sum(Value)", "");
Run Code Online (Sandbox Code Playgroud)

我收到了以下错误.

聚合函数Sum()和Type:String的使用无效.

我尝试使用将列值转换为int

object sum = dttest.Compute("sum(Convert(Value, 'System.Int32'))","");
Run Code Online (Sandbox Code Playgroud)

我又得到了另一个错误

聚合参数中的语法错误:期望具有可能的"子"限定符的单个列参数.

当我指定列的数据类型时,第一个代码将返回正确的值.但在我的情况下,我无法指定列数据类型.有人有解决方案吗?

cuo*_*gle 8

您可以使用LINQ to Datatable:

 var result = dttest.AsEnumerable()
                    .Sum(x => Convert.ToInt32(x["Value"]));
Run Code Online (Sandbox Code Playgroud)

示例如何Sum为特定名称:

 var result = dttest.AsEnumerable()
                    .Where(r => r.Field<string>("Name") == "FilterName")
                    .Sum(x => Convert.ToInt32(x["Value"]));
Run Code Online (Sandbox Code Playgroud)