从类型 'DBNull' 转换为类型 'Decimal' 无效



我从这行代码中收到标题中的错误"从类型'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")

相关内容

  • 没有找到相关文章

最新更新