[C#/DataTable] 컬럼명(String)과 행번호(Int)로 해당 위치 값 가져오기





C# DataTable 객체에서 특정 위치 값을 가져오는 방법에 대해 설명하고자 합니다.

여기서 필요한 것은

  1. 해당 위치의 컬럼명 (String)

  2. 해당 위치의 행(row) 인덱스 번호 (Int)

[탐색 대상 DataTable]

아래는 위의 DataTable을 대상으로 "Contents"라는 컬럼명과 1번째 행 위치의 "Banana"값을 찾는 예제입니다.

[코드]
int rowIdx = 1;

// "테이블명".DefaultView.ToTable(false, "컬럼명").Rows["행번호"]
var SelectedRow = datatable.DefaultView.ToTable(false, "Contents").Rows[rowIdx];
var Result = SelectedRow[0];

"datatable" 객체에서 "Contents" 열의 rowIdx 번째 행의 값을 가져옵니다.

정확히는 DataRow 형태로 반환되는데,

반환된 "SelectedRow" 객체의 첫번째 값을 받으면 얻고자하는 위치의 값을 얻을 수 있습니다.

[반환값 타입, 값 확인]

문법은

"테이블명".DefaultView.ToTable(false, "컬럼명").Rows["행번호"] 

입니다.

"테이블명".DefaultView.ToTable(false, "컬럼명") 까지만 사용할 경우 해당 컬럼을 가져옵니다.

이 때, ToTable() 안의 bool 인자 값은 해당 컬럼의 고유값 여부(Distinct)를 뜻합니다.




아래는 전체 코드입니다.

DataTable datatable = new DataTable();

datatable.Columns.Add(new DataColumn("ID"));
datatable.Columns.Add(new DataColumn("Contents"));


List<string> ContentsList = new List<string>(){ "Apple", "Banana", "Melon" };


// 테이블 데이터 입력
for(int i=0; i<ContentsList.Count; i++)
{
    DataRow dr = datatable.NewRow();
    dr["ID"] = (i + 1);
    dr["Contents"] = ContentsList[i];
    datatable.Rows.Add(dr);
}

int rowIdx = 1;

// "테이블명".DefaultView.ToTable(false, "컬럼명").Rows["행번호"]
var SelectedRow = datatable.DefaultView.ToTable(false, "Contents").Rows[rowIdx];
var Result = SelectedRow[0];

0 댓글