我有一個帶有列的資料表:總計
這是資料表:
Totale (datatype: decimal)
2,9
2,9
我需要對這些列求和,然后我嘗試了這段代碼:
Dim Totale As Double = dt.AsEnumerable().Sum(Function(r) IIf(IsDBNull(r("Totale")), 0, r("Totale")))
Dim Totale As Decimal= dt.AsEnumerable().Where(Function(r) IsDBNull(r("Totale")) = False).Sum(Function(r) r("Totale"))
Dim Totale As Decimal= Convert.ToDecimal(dt.Compute("SUM(Totale)", "Totale is not null"))
這給了我以下結果:
6
6
5,8
只有最后一個是正確的!
為什么前 2 個總和給我6 個結果?
uj5u.com熱心網友回復:
因為您沒有強制轉換 r("Totale"),所以迭代器求和沒有精度,請嘗試:
Dim Totale As Decimal= dt.AsEnumerable().Sum(Function(r) IIf(IsDBNull(r("Totale")), 0, Convert.ToDecimal(r("Totale"))))
uj5u.com熱心網友回復:
似乎 Sum 將值視為導致舍入的整數。您可以嘗試使用 對值進行型別轉換CDec。
Dim Totale As Double = dt.AsEnumerable().Sum(Function(r) IIf(IsDBNull(r("Totale")), CDec(0), CDec(r("Totale"))))
Dim Totale As Decimal= dt.AsEnumerable().Where(Function(r) IsDBNull(r("Totale")) = False).Sum(Function(r) CDec(r("Totale")))
Dim Totale As Decimal= Convert.ToDecimal(dt.Compute("SUM(Totale)", "Totale is not null"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/421583.html
標籤:
