2014-07-23 41 views
0

下面一行:難度雙

String itemid = reader1.IsDBNull(itemid_Index) ? null : reader1.GetString(itemid_Index); 

給我一個運行時錯誤:

Unable to cast object of type 'System.Double' to type 'System.String'

我試圖改變行這樣:

Double itemid = reader1.IsDBNull(itemid_Index) ? (Double?)null : reader1.GetDouble(itemid_Index); 

,但它給人的以下設計時間錯誤:

Cannot implicitly convert type 'double?' to 'double'. An explicit conversion exists (are you missing a cast?)

任何想法?

+0

製作'itemid'了''雙?否則就像'reader1.GetDouble(itemid_Index)?? null'或者'reader1.GetDouble(itemid_Index).Value'(如果你確定'GetDouble'不會返回null) – crashmstr

+0

'double'對於'index'列似乎是一種奇怪的數據類型... –

回答

5

您不能將null分配給double。您可能需要使用double?

Double? itemid = reader1.IsDBNull(itemid_Index) ? (Double?)null : reader1.GetDouble(itemid_Index); 

或使用一些其他值來表示 「空」:

Double itemid = reader1.IsDBNull(itemid_Index) ? Double.MinValue : reader1.GetDouble(itemid_Index); 
+0

我退出我的評論。我可以發誓我曾試圖做到這一點,並讓編譯器大吼我。 – krillgar

+0

@krillgar它很挑剔,但在這種特殊情況下它應該可以正常工作。 –