如何转换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);