我沒有直接熟悉了SingleDecimal
方法的任何工具,所以我在一般意義上回答如下:
從ADO.NET(直接或間接)查詢數據時,很可能(可能兩個)您都會得到某種「讀取器」API(很可能是IDataReader
),或者你會得到原始的object
值。
在第一種情況下,您應該可以訪問IsDBNull
方法(每列);所以請調用該方法,並且做任何你想做的事情。
在第二種情況下,您應檢查DBNull
的值,即if(val is DBNull
)。
在這兩種情況下,代碼的下一步工作都取決於庫。在這兩種情況下,您都可能需要考慮兩個這裏爲null-esque場景:沒有行,並且有單個值的行。
坦率地說,在這兩種情況下,使用現有支持的庫/工具會更容易。例如,短小精悍,這也只是:
string customerId = "01";
decimal? pembayaran = Db.Query<decimal?>(
"Select valuta from ArInvoice where [email protected]",
new { customerId }).Single();
它給你:
- 正確的參數設置
- 空處理
- 相同的API用於查詢的所有數據(
Query<T>
)
- 能夠使用任何您喜歡的LINQ的排名(
Single()
,First()
,ToList()
等)
如果你想使用一個默認值(而不是空decimal?
當單元格的值是null
,你可以只使用:
decimal pembayaran = Db.Query<decimal?>(
"Select valuta from ArInvoice where [email protected]",
new { customerId }).Single() ?? 0M;
這裏要注意的?? 0M
只是一個空合併操作得到一個零decimal
代替null
。
什麼工具/庫是'SingleDecimal'方法?那是你自己的?要麼...?因爲需要在那裏做出改變。 – 2012-08-13 05:51:08