как проверить, существует ли столбец в datatable

У меня есть datable, сгенерированный с содержимым csv-файла. Я использую другую информацию для сопоставления некоторого столбца csv (теперь в datatable) с информацией, которую пользователь должен заполнить.

в лучшем мире отображение было бы всегда возможно. Но это не реальность... Поэтому, прежде чем я попытаюсь сопоставить значение столбца datatable, мне нужно будет проверить, существует ли этот столбец. Если я не сделаю эту проверку, у меня есть ArgumentException.

конечно, я могу проверить это с некоторым код такой :

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

но сейчас у меня есть 3 столбца для сопоставления, и некоторые или все могут существовать/отсутствовать

есть ли хороший способ проверить, существует ли столбец в datatable?

4 ответов


можно использовать operator Contains,

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

MSDN-DataColumnCollection.Содержит()


myDataTable.Columns.Contains("col_name")

для нескольких столбцов вы можете использовать код, аналогичный приведенному ниже.Я просто проходил через это и нашел ответ, чтобы проверить несколько столбцов в 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;
    }

вы можете посмотреть на Columns свойства данного DataTable, это список всех столбцов в таблице.

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