我将 Excel 文件导入到 ASP.NET 数据表中。有些值是空白的,特别是在索引 2 和 3 处,我想将这些空白字段设置为0
.
row.item(2)
调试时,和的值row.item(3)
都是System.DBNull
. 有趣的是,程序进入If
语句并将row.item(2)
值设置为 0,但它从未进入ElseIf
语句。到底是怎么回事?这是我的代码:
If row.Item(2) Is Nothing OrElse row.Item(2).ToString = "" OrElse IsDBNull(row.Item(2)) Then
dt.Rows.Item(i).SetField(2, 0)
ElseIf row.Item(3) Is Nothing OrElse row.Item(3).ToString = "" OrElse IsDBNull(row.Item(3)) Then
dt.Rows.Item(i).SetField(3, 0)
End If
编辑:
根据 Tim 的建议,我将代码修改如下:
If Not row.Field(Of Int32?)(2).HasValue Then
dt.Rows.Item(i).SetField(2, 0)
End If
If Not row.Field(Of Int32?)(3).HasValue Then
dt.Rows.Item(i).SetField(3, 0)
End If
但是,这会引发错误-Object cannot be cast from DBNull to other types
调试时,在第一个循环中:
row.Item(2) = 17
row.Item(3) = 1
理论上,它应该跳过这个迭代并继续下一个迭代。但是,我的程序会立即捕获带有上述错误的异常。