我循环遍历DataRowCollection的行,并将每行的字段分配给变量。无论我如何投射,我总是得到“输入字符串格式不正确”。我只需要gapCd包含0,如果该字段为null或否则值。似乎IsDbNull没有正确返回true。我也尝试过DbNull.Value比较而没有运气。非常感谢任何帮助。
Dim gapCd As Integer = IIf(IsDBNull(row("GAP_CD")), 0, row("GAP_CD"))
答案 0 :(得分:0)
请记住,作为值类型,Integer已初始化为零。所以试试这个:
Dim gapCd As Integer
If Not IsDBNull(row("GAP_CD")) Then gapCd = CInt(row("GAP_CD"))
如果这不起作用,是时候尝试一些日志记录了:
Dim gapCd As Integer
Try
If Not IsDBNull(row("GAP_CD")) Then gapCd = CInt(row("GAP_CD"))
Catch Ex As Exception
SomeLoggingFunction(row("GAP_CD").ToString())
End Try
由于某些原因今天再次看到这一点,并且在新的阅读中我很清楚,您只需从代码中删除一个“我”,将IIf()
函数更改为{{1}操作员和强制短路评估:
If()