使用DBNull.Value不能将对象从DBNull强制转换为其他类型?兑换

时间:2014-03-13 16:16:01

标签: c# dbnull

我正在尝试从我正在寻找的标准中读取数据库中我知道的值为null。 所以我有这种检查方法:ld.Percentage = reader["DataWin3Data"] != DBNull.Value ? Convert.ToDouble(reader["DataWin3Data"]) : double.MinValue; 我之前使用过它,一个字段可以为null并且它没有问题。我不完全确定在这种情况下应该怎么做才能解决它。我在下面列出了我的相关代码。当存在空值时,如何更改我当前正在执行的操作没有出现此错误?

ld.Percentage = reader["DataWin3Data"] != DBNull.Value ? Convert.ToDouble(reader["DataWin3Data"]) : double.MinValue;
ld.TotalCases = reader["DataWin8Data"] != DBNull.Value ? Convert.ToInt32(reader["DataWin8Data"]) : int.MinValue;
ld.TotalPercentage = reader["DataWin7Data"] != DBNull.Value ? Convert.ToDouble(reader["DataWin7Data"]) : double.MinValue;

1 个答案:

答案 0 :(得分:1)

这个怎么样?

ld.Percentage = reader["DataWin3Data"] == DBNull.Value 
                ? double.MinValue : (double)reader["DataWin3Data"];

我已经多次使用这样的代码而没有问题。你确定你总是在读同一个你也在检查null的字段吗?

此外,如果您实际没有转换,请不要使用Convert。这应该是一个演员(就像在我的例子中)。

如果这不起作用,可能是你在做一些奇怪的数据。也许在路上有些序列化?试试这个:

ld.Percentage = reader["DataWin3Data"] is DBNull 
                ? double.MinValue : (double)reader["DataWin3Data"];