【发布时间】:2017-04-20 14:48:30
【问题描述】:
下面的代码有问题:
val_par_Decimal_Min = Math.Round(Convert.ToDecimal(dsTabDados.Tables[EquipTrigger[TGR]].Compute("MIN(" + col.ColumnName + ")", col.ColumnName + " <> 0")?.ToString() ?? "0"), 2).ToString().Replace(",", ".");
val_par_Decimal_Max = Math.Round(Convert.ToDecimal(dsTabDados.Tables[EquipTrigger[TGR]].Compute("MAX(" + col.ColumnName + ")", col.ColumnName + " <> 0")?.ToString() ?? "0"), 2).ToString().Replace(",", ".");
val_par_Decimal_Med = Math.Round(Convert.ToDecimal(dsTabDados.Tables[EquipTrigger[TGR]].Compute("AVG(" + col.ColumnName + ")", col.ColumnName + " <> 0")?.ToString() ?? "0"), 2).ToString().Replace(",", ".");
我正在收集一些数据并保存在表格中。
列是自动创建的,类型为十进制。
我想计算列的最小值、最大值和平均值,不考虑值 0。
但是发生了以下错误:
“输入的字符串格式不正确”
我做错了什么?
【问题讨论】:
-
尝试将您的表达式拆分为更小的、最好是原子语句。因此,不要使用
Math.Round(Convert.ToDecimal(...))对brackets 中的语句使用临时变量来评估您在哪里得到错误。或者,您也可以将 wquickwatch 用于内部表达式并查看它们的评估结果。我想在调用ToDecimal时会发生错误,因为提供的值无法转换。但是如果没有 is 提供的价值,就不可能准确地说出来。 -
感谢您的帮助。以下是我的问题的解决方案: