Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DBNull.Value和IsValueNull()之间的差异_C#_Linq_Casting_Dataset - Fatal编程技术网

C# DBNull.Value和IsValueNull()之间的差异

C# DBNull.Value和IsValueNull()之间的差异,c#,linq,casting,dataset,C#,Linq,Casting,Dataset,我从存储过程中获取一些数据到数据集,然后将这些数据复制到列表中。数据中有一些空值,为此我使用DBNULL.Value进行检查。但每当它变成一个空值时,它就会给我一个错误 错误:指定的强制转换无效 这就是我将数据从数据集复制到列表的方式 AreaId = dsTable.SearchedTable[I]["AreaId"] == DBNULL.Value ? 0 : (long)dsTable.SearchedTable[I]["AreaId"]; 有时它工作正常,但有时它给我错误 当我将这个D

我从存储过程中获取一些数据到数据集,然后将这些数据复制到列表中。数据中有一些空值,为此我使用DBNULL.Value进行检查。但每当它变成一个空值时,它就会给我一个错误

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

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

AreaId = dsTable.SearchedTable[I]["AreaId"] == DBNULL.Value ? 0 : (long)dsTable.SearchedTable[I]["AreaId"];
有时它工作正常,但有时它给我错误

当我将这个DBNULL.Value更改为
isreaidnull()
时。它很好用

AreaId = dsTable.SearchedTable[I].IsAreaIdNull() ? 0 : (long)dsTable.SearchedTable[I]["AreaId"];
我很困惑DBNull.Value有什么问题,因为它在其他过程中工作得非常好。对于其他值,即使在相同的过程中也是如此。我是不是遗漏了什么


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

这里您似乎有一个打字错误:赋值,而不是相等比较:

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

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

这不是
=DBNULL.Value
而是
==DBNULL.Value
是的,很抱歉这是一个打字错误。correctedvariable areaID不能为null。这就是为什么我在复制属于强类型数据集而不是丢失类型数据集的数据时检查它。使用第二种方法。但是第一种方法有什么问题??对于其他值,它运行良好。是的,它是==。那是打字错误。