programing

이름이 있는 DataTable 열 인덱스 가져오기

newsource 2023. 9. 17. 13:15

이름이 있는 DataTable 열 인덱스 가져오기

저는 열 이름으로 데이터 행의 셀 값을 설정하는 코드를 가지고 있습니다.

row["ColumnName"] = someValue;

열에 있는 이 행에 대한 값도 위에 있는 행의 오른쪽에 바로 설정하고 싶습니다.분명히 제가 열 이름이 아닌 색인으로 셀을 얻는다면 이것은 쉬울 것입니다.그렇다면 열 이름에서 열 인덱스를 가져와 다음 작업을 수행할 수 있는 방법이 있습니까?

row[index + 1] = someOtherValue;

즉, 테이블을 처음 만들 때 열 인덱스와 열 이름에 대한 일종의 사전을 만들어야 합니까? 아니면 나중에 이 작업을 하지 않고 열 이름에서 인덱스를 가져올 수 있습니까?

를 사용하여 열 인덱스를 가져올 수 있습니다.DataTable. 따라서 언급한 대로 다음 열이 필요하다면 사용합니다.Column.Ordinal + 1:

row[row.Table.Columns["ColumnName"].Ordinal + 1] = someOtherValue;

경고:

이 코드는 다음 열을 반환하므로 다음 열은 ColumnName, 문제의 요구대로

시도해 보기:

int index = row.Table.Columns["ColumnName"].Ordinal;

Data Column Collection을 간단히 사용할 수 있습니다.인덱스OF

이름으로 필요한 열의 인덱스를 가져온 다음 행과 함께 사용할 수 있도록 합니다.

row[dt.Columns.IndexOf("ColumnName")] = columnValue;

열 이름을 통해 객체를 얻는 DataRow 확장 방법을 작성했습니다.

public static object Column(this DataRow source, string columnName)
{
    var c = source.Table.Columns[columnName];
    if (c != null)
    {
        return source.ItemArray[c.Ordinal];
    }

    throw new ObjectNotFoundException(string.Format("The column '{0}' was not found in this table", columnName));
}

그리고 이렇게 부릅니다.

DataTable data = LoadDataTable();
foreach (DataRow row in data.Rows)
{        
    var obj = row.Column("YourColumnName");
    Console.WriteLine(obj);
}

언급URL : https://stackoverflow.com/questions/11340264/get-index-of-datatable-column-with-name