C# DBNull und nullable-Typen - die sauberste form der Umwandlung

Ich habe eine DataTable, die eine Anzahl von Spalten. Einige dieser Spalten null-Werte zulassen.

DataTable dt;  //Value set. 
DataRow dr;  //Value set. 

//dr["A"] is populated from T-SQL column defined as: int NULL 

Was ist dann die reinste form der Umwandlung von einem Wert in einer DataRow, an eine null-variable.

Im Idealfall würde ich in der Lage sein, etwas zu tun:

int? a = dr["A"] as int?; 

Bearbeiten: Stellt sich heraus, KÖNNEN Sie dies tun, wird der Nebeneffekt, dass, wenn Sie Ihre Schema-Typen sorglosen ints, dann ist dies IMMER null zurück. Die Antwort von Ruben mit dr.Field<int?>("A") sorgt type mismatch nicht im hintergrund fehl. Dies ist natürlich abgeholt werden, durch eine umfassende unit-tests.

Stattdessen bin ich in der Regel die Eingabe etwas entlang der Linien von:

int? a = dr["A"] != DBNull.Value ? (int)dr["A"] : 0; 

Dies ist ein paar Tastenanschläge, aber noch wichtiger ist, es gibt mehr Raum für jemanden, der Sachen etwas mit einem falschen Tastendruck.
Ja, ein Unit-Test wird das abholen, aber ich würde lieber aufhören, es insgesamt.

Was ist die sauberste und am wenigsten fehleranfällig Muster für diese situation.

InformationsquelleAutor der Frage | 2009-11-10

Schreibe einen Kommentar