如何转换DataTable列类型?

时间:2011-07-04 05:59:06

标签: c# datatable column-types

我正在尝试实施:

dtGroupedBy.Compute("sum(POWER)",dvv.RowFilter); 

导致错误:

  

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

的使用无效

我们如何将其转换为列类型?

3 个答案:

答案 0 :(得分:1)

这取决于您创建DataTable的方式。如果它只是直接来自SQL,那么您应该考虑更改SQL本身,以便在获取它时转换POWER列。

但是,如果值首先应该始终为数字,我强烈建议您重新访问数据库模式 - 如果可能的话,更改列类型会更清晰。

答案 1 :(得分:1)

您不能在字符串字段上使用Sum()聚合函数。

你可以做两件事

  • 重新定义数据库中的现有列项 (或架构)是一个数字字段。(推荐)
  • 对您传递给聚合函数的数据执行System.Int32转换。 所以你可以做以下
  

dtGroupedBy.Compute(“sum(CONVERT(”+   POWER +   “ 'System.Int32'))”,dvv.RowFilter);

答案 2 :(得分:1)

Compute方法支持表达式,它们支持您可以在表达式中使用的CONVERT function

例如,您可以计算列的总和,如

MyDataTable.Compute("Sum(Convert(your column name, 'Data Type'))")