2017-04-20 83 views
0

我有一個問題,下面的代碼:Table.compute()C#MIN,MAX和AVG

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

然而以下錯誤發生:

「的輸入字符串的不正確的格式」

我在做什麼錯?

+0

嘗試將您的表達式拆分爲更小,最好是原子語句。因此,而不是'Math.Round(Convert.ToDecimal(...))'使用臨時變量來處理brakets中的語句,以評估您在哪裏得到錯誤。另外你也可以使用wquickwatch作爲內部表達,看看他們的評價。我想調用'ToDecimal'時會發生錯誤,因爲提供的值不能被轉換。但如果沒有*提供的價值,就不可能完全說清楚。 – HimBromBeere

+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(",", "."); 

這是在我的計算返回值爲空,想轉換爲整數,是給我引用了錯誤。

爲了解決它,我已經加在它是「string.IsNullorEmpty」如果是真的變爲「0」,如果它是假的它通知其返回的值的條件。 完成此步驟後,我使用toDecimal。

已解決的問題。