C # DBNull und nullable Types - sauberste Form der Konvertierung

Ich habe eine DataTable, die eine Reihe von Spalten hat. Einige dieser Spalten können auf Null gesetzt werden.

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

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

Was ist dann die sauberste Form der Konvertierung von einem Wert in einer DataRow in eine nullfähige Variable.

Im Idealfall könnte ich Folgendes tun:

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

Bearbeiten: Es stellt sich heraus, dass Sie dies tun KÖNNEN. Der Nebeneffekt ist, dass, wenn Ihre Schematypen nicht ints sind, dies IMMER null zurückgibt. Die Antwort von Ruben mitdr.Field<int?>("A") Stellt sicher, dass Typenkonflikte nicht unbemerkt fehlschlagen. Dies wird natürlich durch gründliche Unit-Tests aufgegriffen.

Stattdessen gebe ich normalerweise Folgendes ein:

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

Dies ist eine Menge mehr Tastenanschläge, aber was noch wichtiger ist, es gibt mehr Platz für jemanden, der etwas mit einem falschen Tastenanschlag stopft. Ja, ein Unit Test wird dies aufgreifen, aber ich würde es lieber ganz aufhören.

Was ist das sauberste und am wenigsten fehleranfällige Muster für diese Situation?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage