Double不是可以为空的类型

时间:2012-02-17 16:53:03

标签: c# linq

我正在使用LINQ:

        // let use Linq
        var DateMarket = from p in Orders_From_CRD.AsEnumerable()
                         where p.Field<Double>("Fill_ID") != null
                         select OrderTable.Rows.Add(p.Field<DateTime>("trade_date"), p.Field<string>("ticker"),
                         p.Field<Double>("EXEC_QTY"), p.Field<Double>("EXEC_PRICE"));

        TradeTable = DateMarket.CopyToDataTable();

但我告诉我错误

Cannot cast DBNull.Value to type 'System.Double'. Please use a nullable type.

你知道在这种情况下如何构建可以为空的类型吗?

我尝试了<Double?>,我得到了'Specified cast is not valid.'

3 个答案:

答案 0 :(得分:5)

您可以使用:

p.Field<Double?>

T?Nullable<T>的简写,{{1}}是允许空值的值类型的包装。

答案 1 :(得分:4)

使用类型:

Double?  

当你需要一个可以为空的双重

答案 2 :(得分:3)

默认情况下,不能为double赋值空值。这个问题的解决方案是使用可空类型:Double?

试试这个:

        var DateMarket = from p in Orders_From_CRD.AsEnumerable()
                     where p.Field<Double?>("Fill_ID") != null
                     select OrderTable.Rows.Add(p.Field<DateTime>("trade_date"), p.Field<string>("ticker"),
                     p.Field<Double?>("EXEC_QTY"), p.Field<Double?>("EXEC_PRICE"));

    TradeTable = DateMarket.CopyToDataTable();