我从这行代码中收到标题中的错误"从类型'DBNull'到类型'十进制'的转换无效。
_event.TotalDollars = IIf((dr("TotalDollars") Is DBNull.Value), "$0", CType(dr("TotalDollars"), Decimal).ToString("c"))
_event.TotalDollars
是一个字符串
为什么IIF声明的第三部分会被评估? 此 IIF 的重点是不尝试将 DBNull 值转换为小数。
两个问题:
IIF
在返回之前评估 True 和 False 操作。
根据您拥有的VS版本,您可以只使用If(condition,true,false)
(没有)
此外,您可能最好使用IsDbNull(condition)
进行测试。
使用DatasetExtensions,你也可以使用可为空的十进制类型来做到这一点。
_event.TotalDollars = if(dr.Field(of Decimal?)("TotalDollars"),0).ToString("c")