我正在尝试声明一个十进制数字,该数字将采用dr [“ index”]的值,或者如果dr [“ index”]为null则为null。
这是我的代码行:
Decimal number = (Decimal)(dr["index"] ?? 0);
我遇到以下错误:
System.Invalid.CastException : 'Specified cast is not valid'
您知道如何解决该问题吗?
答案 0 :(得分:4)
如果使用DBNull.Value,我会选择:
Convert.ToDecimal(dr["index"] == DBNull.Value ? 0m : dr["index"])
或如果为空值:
Convert.ToDecimal(dr["index"] ?? 0m)
如果dr[index]
只能是数字值。
答案 1 :(得分:0)
我建议改用Decimal.TryParse
:
Decimal d = 0;
if(Decimal.TryParse(dr["index"].ToString(), out d)) {
// Do some stuff here...
}
else {
// Connot Parse, do some other stuff...
}