У меня есть таблица данных, созданная с содержимым файла csv. Я использую другую информацию, чтобы сопоставить некоторый столбец csv (теперь в таблице данных) с информацией, которую пользователь должен заполнить.
В лучшем мире картографирование всегда было бы возможным. Но это не реальность ... Поэтому, прежде чем я попытаюсь сопоставить значение столбца с данными, мне нужно будет проверить, существует ли этот столбец вообще. Если я не сделаю эту проверку, у меня будет исключение ArgumentException.
Конечно, я могу проверить это с помощью такого кода:
try
{
//try to map here.
}
catch (ArgumentException)
{ }
но сейчас у меня есть 3 столбца для сопоставления, и некоторые или все могут существовать / отсутствовать
Есть ли хороший способ проверить, существует ли столбец в таблице данных?
DataSet
/DataTable
? Если это так, вы можете посмотреть в коллекции столбцов таблицы список всех столбцов в таблице.Ответы:
Вы можете использовать
operator Contains
,private void ContainColumn(string columnName, DataTable table) { DataColumnCollection columns = table.Columns; if (columns.Contains(columnName)) { .... } }
MSDN - DataColumnCollection.Contains ()
источник
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
источник
DataColumnCollection col = datatable.Columns; if (!columns.Contains("ColumnName1")) { //Column1 Not Exists } if (columns.Contains("ColumnName2")) { //Column2 Exists }
источник