Wie kann nicht gleich DBNull DBNULL
Frage
Ich habe die folgende Codezeile
if (DBNull.Value.Equals(o) || o != null)
wo o
ist object o in row.ItemArray
ich einen Fehler von erhalte ->
Xml type "List of xdt:untypedAtomic" does not support a conversion from Clr type "DBNull" to Clr type "String".
Was ich nicht verstehe, ist, dass, wenn ich meinen Code für Schritt durch diesen if
dies zu kontrollieren sein sollte und Durchführung meine alternative Aktion aber es funktioniert nicht?
Kann jemand bitte etwas Licht für mich vergossen.
Danke!
Lösung
Versuchen Sie es mit
Convert.IsDBNull Methode.
Andere Tipps
Ich glaube, Sie Problem ist, dass in der Tat
DBNull.Value == null
//is always false
Die DBNull ist ein Sonderklasse für Vergleiche auf Werte aus der dB zurück, so dass Sie actualy für einen Null-Zustand müssen überprüfen und eine DBNull.Value, wenn Ihr Array beide enthält.
EDIT: Es tut uns Leid näherem Hinsehen an Ihrem Code können Sie nur benötigen eine ODER-Operation rückgängig zu machen. Wenn o == null Ihre erste Anweisung wird mit Ihrer Ausnahme sprengen. Versuchen Sie:
if (o != null || o == DBNull.Value)
kann ein solcher Vergleich sein hilft
if ( !o.GetType().Equals( DBNull.Value ) )
oder
if (o is DBNull)