2016-10-06 3 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

. Вы можете исправить свою проблему очень легко, используя debug, проверить, как ее использовать. Это поможет вам в будущем! – 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

Thank You Very Много! эта строка кода помогает мне исправить этот конфликт очень легко, огромное спасибо! – 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' –

Смежные вопросы