Як перевірити, чи існує стовпець у таблиці даних


92

У мене є файл даних, створений із вмістом файлу CSV. Я використовую іншу інформацію, щоб зіставити якийсь стовпець csv (тепер у таблиці даних) з інформацією, яку користувач повинен заповнити.

У найкращому світі картографування було б можливим завжди. Але це не реальність ... Отже, перш ніж я спробую зіставити значення стовпця таблиці даних, мені потрібно було б перевірити, чи існує цей стовпець. Якщо я не зроблю цю перевірку, у мене буде ArgumentException.

Звичайно, я можу перевірити це за допомогою такого коду:

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

але на даний момент у мене є 3 стовпці для відображення, і деякі або всі можуть існувати / відсутні

Чи є хороший спосіб перевірити, чи існує стовпець у таблиці даних?


Ви маєте справу з DataSet/ DataTable? Якщо так, ви можете переглянути колекцію стовпців таблиці, щоб переглянути список усіх стовпців у таблиці.
asawyer

Так, @asawyer вміст csv скидається в таблицю даних. Я подивлюсь у цьому напрямку.
Ремі

Відповіді:


196

Ви можете використовувати operator Contains,

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

MSDN - DataColumnCollection.Contens ()


ти впевнений, що це linq? Я не маю жодного посилання на linq у своєму коді та цій роботі
Ремі

це оператор простий з колонок
Aghilas Yakoub

Це не метод розширення linq, це скоріше член типу DataColumnCollection, але він також буде добре працювати.
asawyer

5
@AghilasYakoub Звичайно, я забув про це. Напевно, кращий спосіб піти і в цій справі. Одне, однак, "Ви можете використовувати оператор містить" - це не оператор, це метод-член.
asawyer


8

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.