Comment peut-DBNull pas égale DBNull
Question
J'ai la ligne de code suivante
if (DBNull.Value.Equals(o) || o != null)
où o
est object o in row.ItemArray
Je continue à obtenir une erreur de ->
Xml type "List of xdt:untypedAtomic" does not support a conversion from Clr type "DBNull" to Clr type "String".
Ce que je ne comprends pas que lorsque je fais un pas dans mon code ce if
devrait être attraper cela et mon action alternative exécuter, mais il ne fonctionne pas?
Quelqu'un peut-il s'il vous plaît jeter un peu de lumière pour moi.
Merci!
La solution
Essayez d'utiliser
Convert.IsDBNull procédé.
Autres conseils
Je pense que vous problème est que, en fait,
DBNull.Value == null
//is always false
Le DBNull est une classe spéciale pour les comparaisons sur les valeurs retournées de la dB si vous avez besoin de vérifier actualy une condition nulle et un DBNull.Value si votre tableau contient à la fois.
EDIT: Désolé regardant de plus près votre code, vous pouvez juste besoin d'inverser votre opération OU. Si o == null votre première déclaration va faire exploser votre exception. Essayez:
if (o != null || o == DBNull.Value)
peut être une telle comparaison aide
if ( !o.GetType().Equals( DBNull.Value ) )
ou
if (o is DBNull)