DataTable에서 데이터 보기
업데이트: November 2007
DataTable의 Rows 및 Columns 컬렉션을 사용하여 DataTable의 내용에 액세스할 수 있습니다. Select 메서드를 사용하여 검색 조건, 정렬 순서 및 행 상태 등의 기준에 따라 DataTable에 있는 데이터의 하위 집합을 반환할 수도 있습니다. 또한 기본 키 값으로 특정 행을 검색할 때 DataRowCollection의 Find 메서드를 사용할 수 있습니다.
DataTable 개체의 Select 메서드는 지정된 조건과 일치하는 DataRow 개체를 반환합니다. Select에는 필터 식, 정렬 식 및 DataViewRowState의 선택적 옵션 인수가 사용됩니다. 필터 식은 DataColumn 값에 따라 반환되는 행을 식별하며, 이 식은 LastName = 'Smith'와 같이 표현됩니다. 정렬 식은 열 정렬에 표준 SQL 규칙을 사용하며, 이 식은 LastName ASC, FirstName ASC와 같이 표현됩니다. 식 작성 규칙에 대한 자세한 내용은 DataColumn 클래스의 Expression 속성을 참조하십시오.
팁: |
---|
DataTable의 Select 메서드를 여러 번 호출하려는 경우, 먼저 DataTable에 대해 DataView를 만들면 성능을 향상시킬 수 있습니다. DataView를 만들면 테이블 행의 인덱스가 작성됩니다. 그러면 Select 메서드는 해당 인덱스를 사용하여 쿼리 결과 생성 시간을 상당히 줄여 줍니다. DataTable에 대해 DataView를 만드는 방법은 DataView(ADO.NET)을 참조하십시오. |
Select 메서드는 DataViewRowState에 따라 보거나 조작하려는 행 버전을 선택합니다. 다음 표에서는 사용할 수 있는 DataViewRowState 열거형 값에 대해 설명합니다.
DataViewRowState 값 |
설명 |
---|---|
CurrentRows |
변경되지 않거나 추가되거나 수정된 행을 포함하는 현재 행 |
Deleted |
삭제된 행 |
ModifiedCurrent |
원래 데이터가 수정된 현재 버전 (ModifiedOriginal 참조) |
ModifiedOriginal |
수정된 모든 행의 원래 버전. 현재 버전은 ModifiedCurrent를 사용하여 알 수 있습니다. |
Added |
새 행 |
None |
없음 |
OriginalRows |
변경되지 않거나 삭제된 행을 포함하는 원래 행 |
Unchanged |
변경되지 않은 행 |
다음 예제에서는 DataSet 개체가 필터링되므로, DataViewRowState가 CurrentRows로 설정된 행에서만 작업을 수행합니다.
Dim column As DataColumn
Dim row As DataRow
Dim currentRows() As DataRow = _
workTable.Select(Nothing, Nothing, DataViewRowState.CurrentRows)
If (currentRows.Length < 1 ) Then
Console.WriteLine("No Current Rows Found")
Else
For Each column in workTable.Columns
Console.Write(vbTab & column.ColumnName)
Next
Console.WriteLine(vbTab & "RowState")
For Each row In currentRows
For Each column In workTable.Columns
Console.Write(vbTab & row(column).ToString())
Next
Dim rowState As String = _
System.Enum.GetName(row.RowState.GetType(), row.RowState)
Console.WriteLine(vbTab & rowState)
Next
End If
DataRow[] currentRows = workTable.Select(
null, null, DataViewRowState.CurrentRows);
if (currentRows.Length < 1 )
Console.WriteLine("No Current Rows Found");
else
{
foreach (DataColumn column in workTable.Columns)
Console.Write("\t{0}", column.ColumnName);
Console.WriteLine("\tRowState");
foreach (DataRow row in currentRows)
{
foreach (DataColumn column in workTable.Columns)
Console.Write("\t{0}", row[column]);
Console.WriteLine("\t" + row.RowState);
}
}
Select 메서드를 사용하면 RowState 값이나 필드 값이 다른 행을 반환할 수 있습니다. 다음 예제에서는 이미 삭제된 모든 행을 참조하는 DataRow 배열을 반환합니다. 이 예제는 또한 CustID 열이 5보다 큰 모든 행을 참조하는 또 다른 DataRow 배열을 반환합니다. 이 배열은 CustLName에 따라 정렬됩니다. Deleted 행에서 정보를 보는 방법은 행 상태 및 행 버전을 참조하십시오.
' Retrieve all deleted rows.
Dim deletedRows() As DataRow = workTable.Select(Nothing, Nothing, DataViewRowState.Deleted)
' Retrieve rows where CustID > 5, and order by CustLName.
Dim custRows() As DataRow = workTable.Select( _
"CustID > 5", "CustLName ASC")
// Retrieve all deleted rows.
DataRow[] deletedRows = workTable.Select(
null, null, DataViewRowState.Deleted);
// Retrieve rows where CustID > 5, and order by CustLName.
DataRow[] custRows = workTable.Select("CustID > 5", "CustLName ASC");