Umwandeln des Datenreaderwerts in eine Nullable-Variable

7

Ich versuche den folgenden Code auszuführen, erhalte aber einen Casting-Fehler. Wie kann ich meinen Code umschreiben, um dasselbe zu erreichen?

%Vor%

Danke

    
Elad Benda 23.03.2011, 18:33
quelle

8 Antworten

12

Verwenden Sie die Methode "IsDbNull" am Datenleser ... zum Beispiel:

%Vor%

Bearbeiten

Sie müssten etwas tun, was bool? nullBoolean = null;

hättest du

%Vor%     
taylonr 23.03.2011, 18:37
quelle
8

Überlegen Sie, ob Sie dies in einer Funktion tun.

Hier ist etwas, das ich in der Vergangenheit benutzt habe (Sie können dies zu einer Erweiterungsmethode in .net 4 machen):

%Vor%

Bearbeiten

Als Erweiterung (nicht getestet, aber Sie haben die Idee) und Spaltennamen anstelle von Index verwenden:

%Vor%

Verwendung:

%Vor%     
Giovanni Galbo 23.03.2011 18:38
quelle
2
%Vor%     
Mike Cole 23.03.2011 18:37
quelle
2

Hier gibt es eine Antwort, die hilfreich sein könnte: Ссылка

Sie können das Schlüsselwort "as" verwenden. Beachten Sie die in den Kommentaren erwähnte Vorsicht.

%Vor%

Oder, wenn Sie keine NULL-Zeichen verwenden, wie in Ihrem ursprünglichen Beitrag:

%Vor%     
Josh 07.09.2012 17:36
quelle
1

Ich bin mir sicher, dass ich die Inspiration dafür irgendwo im Interweb gefunden habe, aber ich kann die ursprüngliche Quelle nicht mehr finden. Wie auch immer, unten finden Sie eine Utility-Klasse, die es erlaubt, eine Erweiterungsmethode auf DataReader zu definieren:

%Vor%

Verwendung:

%Vor%

oder

%Vor%

Hier ist die aktivierende Dienstprogrammklasse:

%Vor%

EDIT: verwendet die IsNullableType () - Erweiterungsmethode, die wie folgt definiert ist:

%Vor%     
jeroenh 23.03.2011 18:47
quelle
1

Hier ist meine Aufnahme einer Erweiterungsmethode. Spaltennamensemantik und fällt zurück auf default(T) , wenn eine Null gefunden wird.

%Vor%

Hier ist die Beispielverwendung. Denken Sie daran, dass trotz string als Referenztyp die Umwandlung in null von DBNull nicht möglich ist. Dasselbe gilt für int? .

%Vor%     
jocull 01.12.2016 17:00
quelle
0

Denken Sie daran, dass ein DBNull nicht dasselbe ist wie null, sodass Sie nicht von einem zum anderen umwandeln können. Wie das andere Poster sagte, können Sie mit der IsDBNull () - Methode nach DBNull suchen.

    
Brent Stewart 23.03.2011 18:48
quelle
-2

Probieren Sie diese Version aus. Es führt einige grundlegende Konvertierungen durch und verwaltet auch Standardwerte.

    
Kaj Sevelin 28.08.2012 05:37
quelle

Tags und Links