Kann ich die cast von DBNull zu einem Nullable Bool in einer Zeile?
Ich habe eine Datenbank-Abfrage, die entweder zurück NULL
oder ein boolean (bit) - Wert.
Möchte ich speichern diesen Wert in eine variable vom Typ Nullable<bool>
in C#.
Ich kann nicht scheinen zu finden, eine akzeptable Mischung explizite casts und Konvertierungen, die dies tun, in einer einfachen Weise ohne Ausnahmen geworfen.
Kann es sein fertig in eine lesbare Zeile?
EDIT: Code, wie verlangt
private Nullable<bool> IsRestricted;
...//data access
IsRestricted = (bool?)DataBinder.GetPropertyValue(dataObj, "IsRestricted");
oder vielleicht
IsRestricted = (bool?)(bool)DataBinder.GetPropertyValue(dataObj, "IsRestricted");
könnten Sie zeigen Ihre problematische code ?
Und der Wert für False und Wahr.
Wenn es nur eine Frage der Codierung Stil, schreiben einen
Wird die db-Abfrage-code wirklich zurück
Es erscheint als Typ
Und der Wert für False und Wahr.
Wenn es nur eine Frage der Codierung Stil, schreiben einen
ToNullable
Methode. dieser als Ausgangspunkt.Wird die db-Abfrage-code wirklich zurück
NULL
oder kommt es zurück DBNull.Value
?Es erscheint als Typ
DBNull
wenn im code.InformationsquelleAutor Widor | 2013-01-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
vorausgesetzt, Sie haben ein datareader dr:
---HINZUGEFÜGT----
oder vielleicht kann man den benutzen ?? wenn Sie nicht haben, um zu überprüfen, für DBNull, aber ich bin mir nicht sicher, compiler, wie hier (kann ich nicht testen Sie es jetzt)
Ihre zweite snippet-Code wird nicht kompiliert.
??
weiß nichts überDBNull
.Dein erstes Beispiel funktioniert, was ich brauche - den zweiten habe ich versucht, ohne Erfolg.
im zweiten Ausschnitt ist in Fall, dass Sie nicht haben, um zu überprüfen, für dbnull, aber nur für null!
InformationsquelleAutor giammin
Könnten Sie schreiben
value as bool?
.Dies wird zurück
null
wennvalue
ist nicht der Typbool
.Beachten Sie, dass dies ist etwas ineffizient.
null
.Dann brauchen Sie mehr Komplexität:
value is DBNull ? null : (bool?)value
InformationsquelleAutor SLaks
InformationsquelleAutor Lajos Arpad
Ich mit extension-Methoden für dieses Problem.
Es ist der code, der GetNullableValue Methode:
Und es gibt auch einen einfachen code, der für die GetValue-Methode:
TValue
parameter auf dieGetValue<TValue,TResult>
Methode? Auch, warumNullable<T>
eher alsT?
?InformationsquelleAutor Ilya Palkin