C# DBNull et les Types nullables - forme de conversion les plus propres

J'ai un DataTable, qui a un certain nombre de colonnes. Certaines de ces colonnes sont les valeurs null.

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

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

Alors, quelle est la meilleure forme de la conversion d'une valeur dans un DataRow, à nullable variable.

Idéalement, je voudrais être en mesure de faire quelque chose comme:

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

Modifier: s'avère que vous POUVEZ faire cela, les effets secondaires étant que si votre Schéma types d'arn sont pas entiers, alors c'est TOUJOURS à retourner la valeur null. La réponse par Ruben de l'aide dr.Field<int?>("A") assure différences de type de ne pas échouer en mode silencieux. Ceci, bien sûr, va être repris par un des tests unitaires.

Au lieu de cela j'ai l'habitude de taper quelque chose le long des lignes de:

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

C'est un tas plus de frappes, mais plus important encore, il n'y a plus de place pour quelqu'un à des trucs quelque chose avec un mal de frappe.
Oui, un Test Unitaire sera de prendre cette place, mais je préfère l'arrêter complètement.

Ce qui est le plus propre, moins sujette aux erreurs de modèle pour cette situation.

  • le "int? a = dr["Un"] comme d'int?;" fonctionne pour moi!
  • En effet, il n'. Désolé, mal lu ce qui était souffle sur moi. Si seulement il s'agissait d'une réponse, je l'ai marqué en tant que tel.
InformationsquelleAutor | 2009-11-10