DBNull が DBNull と等しくないのはなぜですか
質問
次のコード行があります
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
これをキャッチして代替アクションを実行する必要がありますが、そうではありませんか?
誰か私に光を当ててくれませんか。
ありがとう!
解決
タグを使用してみてください
Convert.IsDBNull の方法。
他のヒント
あなたの問題は、実際にはそれだと思います
DBNull.Value == null
//is always false
DBNull は、dB から返された値を比較するための特別なクラスであるため、配列に null 条件と DBNull.value の両方が含まれているかどうかを実際にチェックする必要があります。
編集: 申し訳ありませんが、コードをよく見てみると、OR 演算を逆にする必要があるかもしれません。o == null の場合、最初のステートメントは例外で爆発します。試す:
if (o != null || o == DBNull.Value)
このような比較に役立つ
if ( !o.GetType().Equals( DBNull.Value ) )
であってもよいです
または
if (o is DBNull)
所属していません StackOverflow