我遇到以下代码问题:
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。
但是发生了以下错误:
&#34;输入字符串的格式不正确&#34;
我做错了什么?
答案 0 :(得分:0)
在他的帮助下,下面是解决我问题的方法:
val_par_Decimal_Min = Math.Round(Convert.ToDecimal(string.IsNullOrEmpty(dsTabDados.Tables[EquipTrigger[TGR]].Compute("MIN(" + col.ColumnName + ")", col.ColumnName + "<>" + 0).ToString()) ? "0" : dsTabDados.Tables[EquipTrigger[TGR]].Compute("MIN(" + col.ColumnName + ")", col.ColumnName + "<>" + 0).ToString()), 2).ToString().Replace(",", ".");
val_par_Decimal_Max = Math.Round(Convert.ToDecimal(string.IsNullOrEmpty(dsTabDados.Tables[EquipTrigger[TGR]].Compute("MAX(" + col.ColumnName + ")", col.ColumnName + "<>" + 0).ToString()) ? "0" : dsTabDados.Tables[EquipTrigger[TGR]].Compute("MAX(" + col.ColumnName + ")", col.ColumnName + "<>" + 0).ToString()), 2).ToString().Replace(",", ".");
val_par_Decimal_Med = Math.Round(Convert.ToDecimal(string.IsNullOrEmpty(dsTabDados.Tables[EquipTrigger[TGR]].Compute("AVG(" + col.ColumnName + ")", col.ColumnName + "<>" + 0).ToString()) ? "0" : dsTabDados.Tables[EquipTrigger[TGR]].Compute("AVG(" + col.ColumnName + ")", col.ColumnName + "<>" + 0).ToString()), 2).ToString().Replace(",", ".");
在我的计算中返回的值为null,尝试转换为整数时给出了我引用的错误。
为了解决这个问题,我添加了一个条件,它是 “string.IsNullorEmpty” 如果true变为“0”,如果它为false,它会通知值它回来了。 在此步骤之后,我使用toDecimal。
解决了问题。