7

我有以下代码行

if (DBNull.Value.Equals(o) || o != null)

我在哪里o不断object o in row.ItemArray 收到错误-->

Xml type "List of xdt:untypedAtomic" does not support a conversion from Clr type "DBNull" to Clr type "String".

我不明白的是,当我单步执行我的代码时,这if应该是捕捉到它并执行我的替代操作,但它没有?

有人可以为我解释一下吗。

谢谢!

4

3 回答 3

6

我认为你的问题是事实上

DBNull.Value == null 
//is always false

DBNull 是一个特殊类,用于比较从 dB 返回的值,因此您实际上需要检查空条件和 DBNull.value 如果您的数组同时包含两者。

编辑:抱歉仔细查看您的代码,您可能只需要反转您的 OR 操作。如果 o == null 您的第一条语句将因您的异常而崩溃。尝试:

if (o != null || o == DBNull.Value) 
于 2010-01-13T21:53:49.147 回答
6

尝试使用

Convert.IsDBNull方法。

于 2010-01-14T00:53:04.720 回答
1

可能是这样的比较有帮助

if ( !o.GetType().Equals( DBNull.Value ) )

或者

if (o is DBNull)

于 2010-01-13T21:18:55.950 回答