我正在尝试从数据库中提取信息,然后将这些值一起添加。从数据库中提取信息时没有问题,但是在添加值时似乎存在转换错误。
无法隐式转换类型'double?' '加倍'。存在显式转换(您是否错过了演员?)
在我查询的地方,我有这个:
var addition = 0.0;
当我从数据库中提取数据时,我尝试将值添加到此:
addition = addition + clear;
addition
和clear
都是相同的数据类型,这就是为什么我很困惑为什么需要进行任何转换? (双倍的)。
额外信息:clear
来自:
var clear = tbl_detail[a].AmountCleared;
和tbl_detail
是查询数据的数组。
有人可能会参考我收到此错误的原因吗?或者可能指出我正确的方向,因为我不明白为什么:
它需要转换任何内容,因为它们是相同的数据类型和
实际上是什么演员,因为当我搜索任何一个时,Google并没有真正帮助我。
答案 0 :(得分:1)
看起来AmountCleared是一个可以为空的双(双?)。你可以这样做:
addition += clear.Value
如果Clear为null,则抛出InvalidOperationException。
[编辑]如果您想使用空值的默认值,也可以使用addition += clear ?? 0.0
。
您可以将AmoutCleared更改为double。我怀疑你是先通过设计器或数据库创建的,并在数据库列上使用'allow nulls',这就是为什么你得到一个可以为空的类型。因此,您必须将数据库类型更改为“不允许空值”。但是,如果没有看到数据类型tbl_detail [a]的定义或知道如何生成它,我无法帮助你。
答案 1 :(得分:1)
AmountCleared实际上是一个Nullable类型(Nullable),它允许C#值类型表示SQL服务器Null(值类型永远不能赋值为null)
您可以通过简单地调用.Value属性来获取可空类型的基础值,但是如果值为null,则会抛出InvalidOperationException,您可以通过调用.HasValue来检查它是否具有值
试试这个:
addition += clear.HasValue ? clear.Value : 0;
答案 2 :(得分:0)
clear是可以为空的值 安全地操纵nullables使用:
if(clear.hasValue)
{
addition += clear.Value;
}
如果提供的值为null,您还可以使用空合并运算符??
回退到默认值
addition += clear ?? 0.0;