在datatable中获取列的SUM()时出错

时间:2011-12-29 06:41:42

标签: c# asp.net

DataTable dtStock = new DataTable();
DataColumn dcTotalCases = new DataColumn("TotalCases");
dcTotalCases.DataType = System.Type.GetType("System.Int32");
dcTotalCases.ReadOnly = false;
dtStock.Columns.Add(dcTotalCases);

方法1

int sum = Convert.ToInt32(dtStock.Compute("Sum([TotalCases]) ", "[TotalCases] <> ''"));

当我使用这种方法时,我收到错误

  

聚合函数Sum()和Type:String。

的使用无效

方法2

int sum = Convert.ToInt32(dtStock.Compute("SUM(Convert([TotalCases], 'System.Int32'))", "");

当我使用这种方法时,我收到错误

  

聚合参数中的语法错误:期望单个列参数   可能有'儿童'资格。

请帮帮我......

2 个答案:

答案 0 :(得分:6)

我认为方法#1应该可行 - 只需不要将<{1}}列与}列进行比较!

所以使用这样的东西:

INT

int sum = Convert.ToInt32(dtStock.Compute("Sum(TotalCases)", "[TotalCases] > 0"));

或者你需要的任何东西 - 只是不要使用int sum = Convert.ToInt32(dtStock.Compute("Sum(TotalCases)", "[TotalCases] IS NOT NULL")); ,因为这会将[TotalCases] <> ''与空字符串进行比较 - 而这不会起作用!

答案 1 :(得分:1)

我有一个数据表,我没有为任何列指定数据类型。列中的所有值都是整数类型。当我使用上面的sum()我得到错误。 Invalid usage of aggregate function Sum() and Type: String.但是当我指定列的数据类型时,它正常工作。