csv 파일의 내용으로 생성 된 데이터 블이 있습니다. 다른 정보를 사용하여 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))
{
....
}
}
답변
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
}