我正在使用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.'
答案 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();