如何检查数据表中是否存在列

我有一个csv文件的内容生成一个datable。 我使用其他信息将csv的某些列(现在在数据表中)映射到用户需要填写的信息。

在最好的世界里映射将是可能的。 但是这不是现实…所以在我尝试映射数据列的值之前,我需要检查该列是否存在。 如果我不做这个检查,我有一个ArgumentException。

当然,我可以用这样的代码来检查:

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

但我现在有3列地图和一些或全部可能存在/缺失

有没有好的方法来检查一个数据表中是否存在一列?

您可以使用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") 

对于多列,您可以使用类似于下面给出的代码。我只是经历了这个,find答案来检查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; } 

您可以查看给定DataTableColumns属性,它是表中所有列的列表。

 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