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