¿Cómo puede DBNull no es igual DBNull
Pregunta
Tengo la siguiente línea de código
if (DBNull.Value.Equals(o) || o != null)
donde o
es object o in row.ItemArray
Me aparece un error de ->
Xml type "List of xdt:untypedAtomic" does not support a conversion from Clr type "DBNull" to Clr type "String".
Lo que no entiendo es que cuando me paso a través de mi código de este if
debe ser la captura de este y la realización de mi acción alternativa pero no es así?
Por favor alguien puede arrojar algo de luz para mí.
Gracias!
Solución
Trate de usar
Convert.IsDBNull método.
Otros consejos
Creo que es un problema que en realidad
DBNull.Value == null
//is always false
El DBNull es una clase especial para las comparaciones de valores devueltos por la dB por lo que podía comprender necesita para comprobar si hay una condición nula y una DBNull.Value si la matriz contiene tanto.
EDIT: Lo sentimos, mirando más de cerca a su código es posible que sólo tenga que invertir la operación OR. Si o == null su primera declaración va a explotar con su excepción. Proveedores:
if (o != null || o == DBNull.Value)
puede ser tal comparación ayuda
if ( !o.GetType().Equals( DBNull.Value ) )
o
if (o is DBNull)