我收到标题中的错误“从类型'DBNull'转换为'Decimal'类型无效。”从这行代码
_event.TotalDollars = IIf((dr("TotalDollars") Is DBNull.Value), "$0", CType(dr("TotalDollars"), Decimal).ToString("c"))
_event.TotalDollars
是一个字符串
为什么IIF陈述的第三部分会被评估?这个IIF的重点是不要尝试将DBNull值转换为小数。
答案 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")