다음을 통해 공유


DataTable에서 데이터 보기

DataTableRowsColumns 컬렉션을 사용하여 DataTable의 내용에 액세스할 수 있습니다. Select 메서드를 사용하여 검색 조건, 정렬 순서 및 행 상태 등의 기준에 따라 DataTable에 있는 데이터의 하위 집합을 반환할 수도 있습니다. 또한 기본 키 값으로 특정 행을 검색할 때 DataRowCollectionFind 메서드를 사용할 수 있습니다.

DataTable 개체의 Select 메서드는 지정된 조건과 일치하는 DataRow 개체를 반환합니다. Select에는 필터 식, 정렬 식 및 DataViewRowState의 선택적 옵션 인수가 사용됩니다. 필터 식은 DataColumn 값에 따라 반환되는 행을 식별하며, 이 식은 LastName = 'Smith'와 같이 표현됩니다. 정렬 식은 열 정렬에 표준 SQL 규칙을 사용하며, 이 식은 LastName ASC, FirstName ASC와 같이 표현됩니다. 식 작성 규칙에 대한 자세한 내용은 DataColumn 클래스의 Expression 속성을 참조하십시오.

팁

DataTableSelect 메서드를 여러 번 호출하려는 경우, 먼저 DataTable에 대해 DataView를 만들면 성능을 향상시킬 수 있습니다.DataView를 만들면 테이블 행의 인덱스가 작성됩니다.그러면 Select 메서드는 해당 인덱스를 사용하여 쿼리 결과 생성 시간을 상당히 줄여 줍니다.DataTable에 대해 DataView를 만드는 방법은 DataView(ADO.NET)을 참조하십시오.

Select 메서드는 DataViewRowState에 따라 보거나 조작하려는 행 버전을 선택합니다. 다음 표에서는 사용할 수 있는 DataViewRowState 열거형 값에 대해 설명합니다.

DataViewRowState 값

설명

CurrentRows

변경되지 않거나 추가되거나 수정된 행을 포함하는 현재 행

Deleted

삭제된 행

ModifiedCurrent

원래 데이터가 수정된 현재 버전 (ModifiedOriginal 참조)

ModifiedOriginal

수정된 모든 행의 원래 버전. 현재 버전은 ModifiedCurrent를 사용하여 알 수 있습니다.

Added

새 행

None

없음

OriginalRows

변경되지 않거나 삭제된 행을 포함하는 원래 행

Unchanged

변경되지 않은 행

다음 예제에서는 DataSet 개체가 필터링되므로, DataViewRowStateCurrentRows로 설정된 행에서만 작업을 수행합니다.

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");

참고 항목

참조

DataRow

DataSet

DataTable

DataViewRowState

개념

행 상태 및 행 버전

기타 리소스

DataTable에서 데이터 조작