[c#] 데이터 테이블에 열이 있는지 확인하는 방법

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))
    {
       ....
    }
}

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
}


답변