Comment puis-je valider si la colonne existe dans un object DataRow?

private int EmploymentID { get; set; } private void MapFields(DataRow row) { if(row.HasError) EmploymentID = Convert.ToInt32(row["EmploymentID"].ToSsortingng()); } 

Le code montre qu’il valide si l’object DataRow a une erreur sur sa ligne, mais je veux valider s’il existe déjà. Existe-t-il une approche pour le code utilisant plutôt la méthode HasError de DataRow?

Merci pour toutes les bonnes réponses.

DataRow a une propriété Table, référençant le DataTable dont il provient. DataTable a une propriété Columns, qui est un DataColumnCollection .

L’énumération de cette liste vous permettra de déterminer si la table contient la colonne souhaitée. Notez que TOUTES les lignes de la table ont des colonnes identiques.

par exemple:

 bool containsColumn = row.Table.Columns.Any(column => column.ColumnName == "EmploymentID"); 

Il est intéressant de noter que vous devrez probablement vérifier l’égalité avec DBNull , à moins que vous ne soyez 100% certain que EmploymentID ne pourra jamais être retourné null.

De même, si la colonne EmploymentID est saisie sous la forme d’un entier, vous pouvez éviter toute conversion de type en utilisant une conversion directe:

 EmploymentID = (int)row["EmploymentID"]; 

ou bien utilisez DataRowExtensions pour une approche beaucoup plus simple , qui effectue toutes les vérifications de null pour vous:

 EmploymentID = row.Field("EmploymentID"); 

Si EmploymentID n’est pas un int nullable, vous pouvez alors fusionner la valeur comme suit:

 EmploymentID = row.Field("EmploymentID") ?? 0; 

Vous pouvez également utiliser cette seule déclaration

 row.Table.Columns.Contains("EmploymentID")