SUM数据表列,带有计算但没有过滤器

时间:2011-09-19 03:35:43

标签: asp.net datatable sum

当我在其中放置一个项目进行过滤时,这似乎有效,但我不想添加过滤器,即只是很乐意对列进行求和,就是这样。

我尝试过传入string.empty和“”但没有快乐:

object objColTotal;
objColTotal = _dataSetDataTable.Compute("Sum(Price)", "");
decimal tot = Convert.ToDecimal(objColTotal);

2 个答案:

答案 0 :(得分:5)

空字符串应该有效。

您始终可以使用您确定将包含所有记录的过滤器。


对十进制列进行快速测试:

var dt = new DataTable();
dt.Columns.Add("DecCol1", typeof(decimal));
dt.Columns.Add("StrCol1");
dt.Rows.Add(new object[] { 1.1, "r1"});
dt.Rows.Add(new object[] { 2.2, "r2" });
dt.Rows.Add(new object[] { 3.3, "r3" });

object sum = dt.Compute("SUM(DecCol1)", "");
Console.WriteLine(sum);

我得到了正确答案:6.6

答案 1 :(得分:0)

注意事项

  • 如果您的列名称有空格,则必须使用括号,不接受单引号或双引号。
  • 还要注意Compute返回一个对象,该对象使用某些内容(int)给出错误进行向上转换,并且必须使用其他方法,如下面的示例

样品:

int Dones = int.Parse(dt.Compute("sum(Done)", "").ToString());
int InProgresss = int.Parse(dt.Compute("sum([In Progress])", "").ToString())