2014-07-23 39 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它很挑剔,但在这种特殊情况下它应该可以正常工作。 –