无法将对象从DBNull强制转换为其他类型

时间:2016-10-06 05:48:06

标签: c# datatable datarow

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"]),有人可以指导我解决这个错误,我通过更改数据类型尝试了多种处理方式,如果你能指导我解决这个冲突,我真的很感激,非常感谢!

2 个答案:

答案 0 :(得分:2)

当您获得DBNull作为结果时,您必须使用此代码,因为DBNull是一种自有类型,无法转换为不同的System.Object

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

答案 1 :(得分:-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(),
    });
}