如何转换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()
聚合函数。
你可以做两件事
- 将db(或模式)中的现有列项重新定义为数字字段。(推荐)
- 对传递给聚合函数的数据执行
System.Int32
转换。 所以你可以做到以下几点
dtGroupedBy.Compute(“sum(CONVERT(”+ POWER +“,”System.Int32“))”,dvv.RowFilter);