2016-02-26 40 views
1

我從存儲過程中獲取一些數據到數據集,然後將該數據複製到列表中。數據中有一些NULL值,我正在用DBNULL.Value進行檢查。但是,無論何時它提供一個NULL值,它給我錯誤DBNull.Value和IsValueNull()之間的區別

錯誤:指定的轉換無效。

這就是我將數據從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。即使在其他值的同一過程中。我錯過了什麼嗎?

任何形式的幫助將不勝感激。

+0

這不是'= DBNULL.Value'但'== DBNULL.Value ' –

+0

是的抱歉,這是一個錯字錯誤。已更正 –

+0

變量areaID不能爲空。這就是爲什麼我在複製數據時檢查它的原因 –

回答

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"]; 
+0

是的,它是==。這是一個打字錯誤。 –

相關問題