다음을 통해 공유


DataTable에서 데이터 보기

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

DataTable 개체의 Select 메서드는 지정된 조건과 DataRow 일치하는 개체 집합을 반환합니다. Select 는 필터 식, 정렬 식 및 DataViewRowState의 선택적 인수를 사용합니다. 필터 식은 DataColumn 값에 따라 반환할 행(예: LastName = 'Smith'.)을 식별합니다. 정렬 식은 열 순서 지정에 대한 표준 SQL 규칙을 따릅니다. 예를 들면 다음과 같습니다 LastName ASC, FirstName ASC. 식 작성에 대한 규칙은 Expression 클래스의 속성을 참조 하세요.

팁 (조언)

DataTableSelect 메서드에 대한 여러 호출을 수행하는 경우 먼저 DataView에 대한 호출을 만들어 성능을 높일 수 있습니다. DataView를 만들면 테이블의 행이 인덱싱됩니다. 그런 다음 Select 메서드는 해당 인덱스로 쿼리 결과를 생성하는 시간을 크게 줄입니다. DataTable에 대한 DataView를 만드는 방법에 대한 자세한 내용은 DataViews를 참조하세요.

Select 메서드는 DataViewRowState에 기반하여 볼 때나 조작할 행의 버전을 결정합니다. 다음 표에서는 가능한 DataViewRowState 열거형 값을 설명합니다.

DataViewRowState 값 설명
CurrentRows 변경되지 않은 행, 추가된 행 및 수정된 행을 포함한 현재 행입니다.
삭제됨 삭제된 행입니다.
ModifiedCurrent 원래 데이터의 수정된 버전인 현재 버전입니다. ( ModifiedOriginal 참조)
ModifiedOriginal 수정된 모든 행의 원래 버전입니다. 현재 버전은 ModifiedCurrent를 사용하여 사용할 수 있습니다.
추가 새 행입니다.
없음 없음.
OriginalRows 변경되지 않은 행과 삭제된 행을 포함한 원래 행입니다.
변경되지 않음 변경되지 않은 행입니다.

다음 예제에서는 DataViewRowState가 CurrentRows로 설정된 행만 사용할 수 있도록 DataSet 개체가 필터링됩니다.

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 배열을 반환하고 CustLName에서 정렬하여 CustID 열이 5보다 큰 모든 행을 참조하는 다른 DataRow 배열을 반환합니다. 삭제된 행의 정보를 보는 방법에 대한 자세한 내용은 행 상태 및 행 버전을 참조하세요.

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

참고하십시오