我正在遍历DataRowCollection的行,并将每行的字段分配给一个变量。无论我如何转换,我总是得到"输入字符串格式不正确"。我只需要gapCd包含0,如果字段为空或值,否则。似乎IsDbNull没有正确返回true。我也尝试过DbNull。没有运气的价值比较。如有任何帮助,不胜感激。
Dim gapCd As Integer = IIf(IsDBNull(row("GAP_CD")), 0, row("GAP_CD"))
记住,作为值类型,Integer已经初始化为0。所以试试这个:
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
由于某种原因今天又看到了这个,在新的阅读中我很清楚,你所要做的就是从代码中删除一个"I"来将IIf()
函数更改为If()
运算符并强制短路计算:
Dim gapCd As Integer = If(IsDBNull(row("GAP_CD")), 0, row("GAP_CD"))