C# 如何将DBNull分配给基元类型以方便数据库插入

C# 如何将DBNull分配给基元类型以方便数据库插入,c#,double,primitive-types,dbnull,C#,Double,Primitive Types,Dbnull,我的代码中有下面一行为datatable列赋值。它可以是空的,也可以是价格 double? Price; price = range.Cells[i, j].Value2 == null ? Double.NaN : range.Cells[i,j].Value2; row["Price"] = **(price != Double.NaN) ? price.Value** : (object)DBNull.Value; VS2010产生了一条绿色的曲线(双星中的代码),上面写着 表达式类型始

我的代码中有下面一行为datatable列赋值。它可以是空的,也可以是价格

double? Price;
price = range.Cells[i, j].Value2 == null ? Double.NaN : range.Cells[i,j].Value2;
row["Price"] = **(price != Double.NaN) ? price.Value** : (object)DBNull.Value;
VS2010产生了一条绿色的曲线(双星中的代码),上面写着

表达式类型始终为false,因为double永远不能为null


我怎样才能避免这个问题,以便在需要时在数据库表中为price分配null值?

使用
Double.NaN
对您没有帮助,因为
NaN
甚至不等于它本身。但不清楚你为什么要分两个阶段来做这件事——我只是建议:

row["Price"] = range.Cells[i, j].Value2 ?? (object) DBNull.Value;

使用
Double.NaN
对您没有帮助,因为
NaN
甚至不等于它本身。但不清楚你为什么要分两个阶段来做这件事——我只是建议:

row["Price"] = range.Cells[i, j].Value2 ?? (object) DBNull.Value;

当您有一个
双精度?
可用时,为什么要使用
NaN
?我们可以假设
price
/
price
不匹配仅仅是一个输入错误吗?当您有
double?
可用时,为什么要使用
NaN
?我们是否可以假设
价格
/
价格
不匹配只是一个输入错误?