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