DBNull.Value 和 IsValueNull() 之间的区别

本文关键字:之间 区别 Value IsValueNull DBNull | 更新日期: 2023-09-27 18:36:16

我正在从存储过程获取一些数据到数据集,然后将该数据复制到列表中。数据中有一些 NULL 值,为此我正在使用 DBNULL 进行检查。价值。但是每当涉及到 NULL 值时,它都会给我错误

错误: 指定的强制转换无效。

这就是我将数据从数据集复制到列表的方式。

AreaId = dsTable.SearchedTable[I]["AreaId"] == DBNULL.Value ? 0 : (long)dsTable.SearchedTable[I]["AreaId"];
有时

它工作正常,但有时它会给我错误。

当我更改此 DBNULL 时。价值IsAreaIdNull()。它工作正常。

AreaId = dsTable.SearchedTable[I].IsAreaIdNull() ? 0 : (long)dsTable.SearchedTable[I]["AreaId"];

我很困惑DBNull.Value有什么问题,因为它在其他过程中工作得很好。即使在其他值的相同过程中。我错过了什么??

任何形式的帮助将不胜感激。

DBNull.Value 和 IsValueNull() 之间的区别

看起来你有一个错别字:赋值而不是这里的相等比较:

dsTable.SearchedTable[I]["AreaId"] = DBNULL.Value ? 0 : 
                                                   (long)dsTable.SearchedTable[I]["AreaId"];

它应该是

dsTable.SearchedTable[I]["AreaId"] == DBNULL.Value ? 0 : 
                                                    (long)dsTable.SearchedTable[I]["AreaId"];