使用GetDecimal会在条件表达式

时间:2017-08-01 07:50:28

标签: c# sqldatareader dbnull

您好我正在使用GetDecimal(),但它在条件表达式中出错。

Data = varCmd.IsDBNull(2) ? null : varCmd.GetDecimal(2)

因为这会导致错误"Type of conditional expression cannot be determined because there is no implicit conversion between string and decimal "。什么可以用作GetDecimal()的默认值?有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

这里的问题是这一部分:

Data = varCmd.IsDBNull(2) ? null : varCmd.GetDecimal(2)
                            ^-+^   ^----------+-------^
                              |               |
                              |               +-- Decimal type
                              +-- not a Decimal type

表达式无法编译,因为编译器无法推断为了使其工作,它必须使最后一部分成为可空的Decimal,因此它试图找到一个可以容纳{{1}的类型},登陆null,然后登陆错误信息。

你需要指定你想要一个可以为空的小数作为结果,假设 string也是可以为空的十进制。

如果是,这将有效:

Data

如果不是,那么如果列为Data = varCmd.IsDBNull(2) ? (Decimal?)null : varCmd.GetDecimal(2) Data),则需要决定要存储到null的内容,可能是DBNull

0