2016-10-06 60 views
0
List<exchange_rates> exch_rate_list = new List<exchange_rates>(); 

foreach (DataRow dr in ExchangeRates.Rows) 
{ 
    exch_rate_list.Add(new exchange_rates { 
     one_usd_to_currency = Convert.ToDouble(dr["one_usd_to_currency"]), 
     currency = dr["currency"].ToString(),      
    }); 
} 

好吧,我得到一個錯誤說對象不能從DBNull轉換到其它類型的在這一點上one_usd_to_currency = Convert.ToDouble(dr["one_usd_to_currency"]),有人可以請指導我這個錯誤,在這裏我已經嘗試很多通過更改數據類型來處理的方法,我非常感謝能否指導我解決這個錯誤以解決這個衝突,非常感謝!對象不能從DBNull轉換到其他類型的

+3

檢查'博士[ 「one_usd_to_currency」]!=轉換之前DBNull.Value'。這與普通的NullReferenceException基本相同 – Rob

+0

您可以使用調試很容易地解決您的問題,並檢查如何使用它。它將在未來幫助你! – mybirthname

+1

[對象無法從DBNULL轉換爲其他類型]的可能的副本(http://stackoverflow.com/questions/6098646/object-cannot-be-cast-from-dbnull-to-other-types) – HimBromBeere

回答

0
one_usd_to_currency = (dr["one_usd_to_currency"] == DBNull.Value) ? null : 
           Convert.ToDouble(dr["one_usd_to_currency"]) 

有了一種假設,即one_usd_to_currency可以採取null,否則更改填補了DBNull.Value情況下,值是true甚至可能沒有填寫任何東西忽略null

2

當你DBNull作爲結果,你必須使用此代碼作爲DBNull是一種自己的類型,無法投射到任何不同的東西System.Object

var dbValue = dr["one_usd_to_currency"]; 
if(dbValue != DBNull.Value) one_usd_to_currency = Convert.ToDouble(dbValue); 
+0

非常感謝很多!這行代碼幫助我很容易地解決這個衝突,非常感謝! – Mirzan

-1

你可以嘗試像....

foreach (DataRow dr in ExchangeRates.Rows) { 

    if (dr["one_usd_to_currency"] == null) 
     dr["one_usd_to_currency"] = 0; 

    exch_rate_list.Add(new exchange_rates { 
     one_usd_to_currency = Convert.ToDouble(dr["one_usd_to_currency"]), 
     currency = dr["currency"].ToString(), 
    }); 
} 
+1

不行,'DBNull'與'null'不一樣 –

相關問題