DBNull怎么能不等于DBNull

Ref*_*din 7 .net c# null dbnull object

我有以下代码行

if (DBNull.Value.Equals(o) || o != null)
Run Code Online (Sandbox Code Playgroud)

这里oobject o in row.ItemArray 我不断收到的错误- >

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

我不明白的是,当我单步执行我的代码时,if应该抓住这个并执行我的替代操作,但事实并非如此?

有人可以为我解释一下.

谢谢!

Tj *_*lie 6

事实上,我认为你的问题就在于此

DBNull.Value == null 
//is always false
Run Code Online (Sandbox Code Playgroud)

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

编辑:抱歉,仔细查看您的代码,您可能只需要撤消您的OR操作.如果o == null,您的第一个语句会因您的异常而爆炸.尝试:

if (o != null || o == DBNull.Value) 
Run Code Online (Sandbox Code Playgroud)


Sol*_*ogi 6

尝试使用

Convert.IsDBNull方法.