Come può DBNull non essere uguale a DBNull
Domanda
Ho la seguente riga di codice
if (DBNull.Value.Equals(o) || o != null)
Dove o
È object o in row.ItemArray
Continuo a ricevere l'errore -->
Xml type "List of xdt:untypedAtomic" does not support a conversion from Clr type "DBNull" to Clr type "String".
Quello che non capisco è che quando passo attraverso il mio codice this if
dovrei rilevarlo ed eseguire la mia azione alternativa, ma non lo fa?
Qualcuno può darmi un po' di luce?
Grazie!
Soluzione
Prova a usare
Convert.IsDBNull metodo.
Altri suggerimenti
Credo problema è che in realtà
DBNull.Value == null
//is always false
Il DBNull è una classe speciale per il confronto sui valori restituiti dalla dB in modo da actualy necessario controllare per una condizione NULL e un DBNull.Value se la matrice contiene sia.
Modifica Spiacenti guardando più da vicino il codice si può solo bisogno di invertire la vostra OR. Se o == null tua prima dichiarazione sarà saltare in aria con il tuo eccezione. Prova:
if (o != null || o == DBNull.Value)
potrebbe essere utile questo confronto
if ( !o.GetType().Equals( DBNull.Value ) )
O
if (o is DBNull)