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

时间:2016-02-26 12:57:15

标签: c# linq casting dataset

我从存储过程到DataSet获取一些数据,然后将该数据复制到List。数据中有一些NULL值,我正在使用DBNULL.Value进行检查。但是无论什么时候出现NULL值,它都会给我错误

  

错误:指定的演员表无效。

这就是我将数据从DataSet复制到List的方式。

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

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

当我将 DBNULL.Value 更改为IsAreaIdNull()时。它工作正常。

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

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

任何形式的帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

看起来你有一个拼写错误:赋值而不是相等比较:

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

应该是

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