我有以下代码行
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
应该抓住这个并执行我的替代操作,但事实并非如此?
有人可以为我解释一下。
谢谢!
答案 0 :(得分:6)
我认为你问题实际上是
DBNull.Value == null
//is always false
DBNull是一个特殊的类,用于比较从dB返回的值,因此,如果您的数组包含两者,则实际需要检查空条件和DBNull.value。
编辑:很抱歉,仔细查看您的代码,您可能只需要撤消您的OR操作。如果o == null,您的第一个语句会因您的异常而爆炸。尝试:
if (o != null || o == DBNull.Value)
答案 1 :(得分:6)
尝试使用
答案 2 :(得分:1)
可能是这样的比较帮助
if ( !o.GetType().Equals( DBNull.Value ) )
或
if (o is DBNull)