如何转换DataTable列类型



我正在尝试实现:

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

这是一个错误的结果:

聚合函数Sum((和Type:String的用法无效。

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

Compute方法支持表达式,并且支持可以在表达式内部使用的CONVERT function

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

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

这将取决于您如何创建DataTable。如果它直接来自SQL,那么您应该考虑更改SQL本身,以便在获取POWER列时对其进行转换。

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

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

有两件事你可以做

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

dtGroupedBy.Compute("sum(CONVERT("+功率+",'System.Int32'((",dvv.RowFilter(;

最新更新