2

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

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

_event.TotalDollars是一个字符串

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

4

2 回答 2

4

两个问题:

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

根据您拥有的 VS 版本,您可以If(condition,true,false)改用(不是)

另外,你可能最好用IsDbNull(condition)它来做测试。

于 2012-11-30T18:12:55.993 回答
1

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

_event.TotalDollars = if(dr.Field(of Decimal?)("TotalDollars"),0).ToString("c")
于 2012-11-30T20:08:18.927 回答