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'))", "");
当我使用这种方法时,我收到错误
聚合参数中的语法错误:期望单个列参数 可能有'儿童'资格。
请帮帮我......
答案 0 :(得分:6)
我认为方法#1应该可行 - 只需不要将<{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.
但是当我指定列的数据类型时,它正常工作。