2013-01-24 58 views
1

請參見下面的代碼聲明回報無效的輸出

totLen = (r.Field<int>("Quantity") <= 0 ? 1 : r.Field<int>("Quantity")) * 
    ((r.Field<decimal>("Breath") <= 0 ? 1 : r.Field<decimal>("Breath")) * 
    (r.Field<decimal>("Length") <= 0 ? 1 : r.Field<decimal>("Length")) * 
    (r.Field<decimal>("Height") <= 0 ? r.Field<decimal>("Height") : r.Field<decimal>("Height"))) 

在這段代碼我覺得如果r.Field(列名)的任意值都爲零比它應該僅1 更換乘以通過使用?和:有條件的運營商,但它給了我錯誤的輸出並返回一個零(0)...
可以任何人建議我爲什麼發生這種情況?

+0

能否通過檢查什麼是每個和你所得到的值調試? – ryadavilli

+0

處理零的不錯想法 – 2013-01-24 10:58:37

+0

你想用這段代碼實現什麼?我不明白爲什麼'totLen'應該是非零的,如果所有字段爲零 –

回答

1

如果「高度」字段爲0,您仍然在乘法中使用它。

變化

r.Field<decimal>("Height") <= 0 ? r.Field<decimal>("Height") : r.Field<decimal>("Height") 

r.Field<decimal>("Height") <= 0 ? 1 : r.Field<decimal>("Height") 
+0

我的愚蠢錯誤... 謝謝... –

1
totLen = (r.Field<int>("Quantity") <= 0 ? 1 : r.Field<int>("Quantity")) * 
((r.Field<decimal>("Breath") <= 0 ? 1 : r.Field<decimal>("Breath")) * 
(r.Field<decimal>("Length") <= 0 ? 1 : r.Field<decimal>("Length")) * 
(r.Field<decimal>("Height") <= 0 ? 1 : r.Field<decimal>("Height"))) 

試試這個

+0

我的愚蠢錯誤... 謝謝.... –