DBNull怎么能不等于DBNull

时间:2010-01-13 20:59:37

标签: c# .net object null dbnull

我有以下代码行

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

其中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应该抓住这个并执行我的替代操作,但事实并非如此?

有人可以为我解释一下。

谢谢!

3 个答案:

答案 0 :(得分:6)

我认为你问题实际上是

DBNull.Value == null 
//is always false

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

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

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

答案 1 :(得分:6)

尝试使用

Convert.IsDBNull方法。

答案 2 :(得分:1)

可能是这样的比较帮助

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

if (o is DBNull)