从类型“DBNull”到“Decimal”类型的转换无效

时间:2012-11-30 18:09:26

标签: vb.net ado.net

我收到标题中的错误“从类型'DBNull'转换为'Decimal'类型无效。”从这行代码

_event.TotalDollars = IIf((dr("TotalDollars") Is DBNull.Value), "$0", CType(dr("TotalDollars"), Decimal).ToString("c"))

_event.TotalDollars是一个字符串

为什么IIF陈述的第三部分会被评估?这个IIF的重点是不要尝试将DBNull值转换为小数。

2 个答案:

答案 0 :(得分:4)

两个问题:

IIF在返回之前评估True和False操作。

根据您拥有的VS版本,您可以使用If(condition,true,false)代替(不支持)

此外,您最好使用IsDbNull(condition)进行测试。

答案 1 :(得分:1)

使用DatasetExtensions,您也可以使用可为空的十进制类型执行此操作。

_event.TotalDollars = if(dr.Field(of Decimal?)("TotalDollars"),0).ToString("c")