J'ai une table de données (DataTable) qui comporte un certain nombre de colonnes. Certaines de ces colonnes sont nullables.
DataTable dt; // Value set.
DataRow dr; // Value set.
// dr["A"] is populated from T-SQL column defined as: int NULL
Quelle est donc la forme la plus propre de conversion d'une valeur dans un DataRow en une variable nullable ?
Idéalement, je devrais pouvoir faire quelque chose comme.. :
int? a = dr["A"] as int?;
Editar : Il s'avère que vous pouvez le faire, l'effet secondaire étant que si vos types de schéma ne sont pas des ints, alors cela va TOUJOURS retourner null. La réponse de Ruben d'utiliser dr.Field<int?>("A")
garantit que les erreurs de type n'échouent pas silencieusement. Cela sera bien sûr détecté par des tests unitaires approfondis.
Au lieu de cela, je tape généralement quelque chose du genre :
int? a = dr["A"] != DBNull.Value ? (int)dr["A"] : 0;
Cela représente beaucoup plus de frappes, mais surtout, il y a plus de place pour que quelqu'un fasse une erreur de frappe. Oui, un test unitaire le détectera, mais je préférerais l'arrêter complètement.
Quel est le modèle le plus propre et le moins sujet aux erreurs pour cette situation ?