Double 不是可为空的类型

本文关键字:类型 Double | 更新日期: 2023-09-27 18:25:03

我正在用 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.'

Double 不是可为空的类型

您可以使用:

p.Field<Double?>

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

使用类型 :

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();