我有一个带有一些可为空双字段的表。使用 LinqToSQL 尝试直接使用该字段我得到
参数类型 System.Nullable 不可分配给参数类型 double
我该如何正确处理这个问题?
该问题与 Linq 无关。这与之间的转换有关double
and double?
/Nullable<double>
.
隐式转换自double?
to double
不允许:
double? foo ;
double bar = foo ;
-
您可以直接引用 double 值:
double? foo ;
double bar = foo.Value ;
这会抛出一个NullReferenceException
if the Nullable<T>
为空(即.HasValue
是假的)。
-
你可以投射它:
double? foo ;
double bar = (double) foo ;
同样,如果Nullabl<T>
一片空白。
-
如果满足以下条件,您可以使用空合并运算符来分配默认值:Nullable<T>
一片空白:
double? foo ;
double bar = foo ?? -1.0 ;
当然,这避免了 NullReferenceException` 问题。
-
您可以按照与空合并运算符相同的方式使用三元运算符:
double? foo ;
double bar = ( foo.HasValue ? foo.Value : -2 ) ;
-
最后,您可以使用常规条件逻辑来遵循替代路径:
double? foo ;
double bar ;
if ( foo.HasValue )
{
doSomething(foo.Value) ;
}
else
{
doSomething() ;
}
这些是关于选项的。哪个是对的?我不知道。这取决于您的背景。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)