web-dev-qa-db-fra.com

Comment vérifier si une colonne existe dans un datatable

J'ai un datable généré avec le contenu d'un fichier csv. J'utilise d'autres informations pour mapper une colonne du fichier csv (maintenant dans le datatable) sur les informations que l'utilisateur doit renseigner.

Dans le meilleur des mondes, la cartographie serait toujours possible. Mais ce n'est pas la réalité ... Avant d'essayer de mapper la valeur de la colonne datatable, je devrais vérifier si cette colonne existe même. Si je ne le fais pas, j'ai une ArgumentException.

Bien sûr, je peux vérifier cela avec un code comme celui-ci:

try
{
    //try to map here.
}
catch (ArgumentException)
{ }

mais j'ai pour l'instant 3 colonnes à mapper et tout ou partie pourrait être existant/manquant

Y a-t-il un bon moyen de vérifier si une colonne existe dans un datatable?

81
Rémi

Vous pouvez utiliser operator Contains,

private void ContainColumn(string columnName, DataTable table)
{
    DataColumnCollection columns = table.Columns;        
    if (columns.Contains(columnName))
    {
       ....
    }
}

MSDN - DataColumnCollection.Contains ()

172
Aghilas Yakoub
myDataTable.Columns.Contains("col_name")
67
adinas

Pour plusieurs colonnes, vous pouvez utiliser un code similaire à celui donné ci-dessous.Je venais de parcourir cette section et j'ai trouvé une réponse pour vérifier plusieurs colonnes dans Datatable.

 private bool IsAllColumnExist(DataTable tableNameToCheck, List<string> columnsNames)
    {
        bool iscolumnExist = true;
        try
        {
            if (null != tableNameToCheck && tableNameToCheck.Columns != null)
            {
                foreach (string columnName in columnsNames)
                {
                    if (!tableNameToCheck.Columns.Contains(columnName))
                    {
                        iscolumnExist = false;
                        break;
                    }
                }
            }
            else
            {
                iscolumnExist = false;
            }
        }            
        catch (Exception ex)
        {

        }
        return iscolumnExist;
    }
8
lokendra jayaswal

Vous pouvez regarder la propriété Columns d'un DataTable donné, c'est une liste de toutes les colonnes de la table.

private void PrintValues(DataTable table)
{
    foreach(DataRow row in table.Rows)
    {
        foreach(DataColumn column in table.Columns)
        {
            Console.WriteLine(row[column]);
        }
    }
}

http://msdn.Microsoft.com/en-us/library/system.data.datatable.columns.aspx

0
asawyer