在数据表中获取列的SUM()时出错 [英] Error while taking SUM() of column in datatable
问题描述
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] <> ''"));
使用此方法时,出现错误
When I use this method, I get an error
聚合函数Sum()和类型:String的用法无效.
Invalid usage of aggregate function Sum() and Type: String.
方法2
int sum = Convert.ToInt32(dtStock.Compute("SUM(Convert([TotalCases], 'System.Int32'))", "");
使用此方法时,出现错误
When I use this method, I get an error
聚合参数中的语法错误:期望使用单列参数可能带有儿童"预选赛.
Syntax error in aggregate argument: Expecting a single column argument with possible 'Child' qualifier.
请帮助我...
推荐答案
我认为方法#1应该有效-只是不要比较您的 INT
列为空字符串!!
I believe method #1 should work - just don't compare your INT
column to an empty string!!
因此,请使用以下内容:
So use something like this:
int sum = Convert.ToInt32(dtStock.Compute("Sum(TotalCases)", "[TotalCases] > 0"));
或
int sum = Convert.ToInt32(dtStock.Compute("Sum(TotalCases)", "[TotalCases] IS NOT NULL"));
或您需要的任何内容-只是不要使用 [TotalCases]<>''
,因为它会将 INT
与一个空字符串进行比较-但这是行不通的!
or whatever you need - just don't use [TotalCases] <> ''
since that compares an INT
to an empty string - and that's not going to work!
这篇关于在数据表中获取列的SUM()时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!