在我的程序中,我循環訪問數據表以獲取每個字段的數據。我的一行代碼如下所示:在轉換爲int之前將空字段轉換爲零?
int LYSMKWh = Convert.ToInt32(resultsDT.Rows[currentRow]["LYSMKWh"]);
基本上,我只是把那單元格中的值,並將其轉換爲Int32。但是,當字段中的數據爲空時,我遇到了一個問題。我收到無法將「DBNull」轉換爲另一種類型的錯誤消息。
所以,我知道我可以只檢查該字段的值之前,我嘗試做這樣的事情,將其轉化:
if (resultsDT.Rows[currentRow]["LYSMKWh"] == null)
{
resultsDT.Rows[currentRow]["LYSMKWh"] = 0;
}
但是,有沒有更好的方法來做到這一點?有沒有什麼我可以做「內聯」,而我試圖轉換的價值,而不必訴諸於使用if
?
編輯:我曾嘗試使用此建議的方法:
int LYSMKWh = Convert.ToInt32(resultsDT.Rows[currentRow]["LYSMKWh"] ?? "0");
不幸的是,我還收到了無效的轉換錯誤信息與問候到的DBNull類型。有人建議我可以使用問題?如果任何一方的類型不同,則爲運算符。另外,由於我完全控制了構建數據表的數據,因此我將其更改爲不會將空值寫入任何字段。所以,在這種情況下,幾乎否定了將null轉換爲int32的需要。感謝所有的建議,每個人!
這對我來說確實很好。我嘗試使用下面的例子與??運算符,但我仍然收到了無效投射錯誤消息。從下面用戶CodeNaked說的,使用??時可能會出現問題?如果兩邊的類型不同。 – Kevin