다음을 통해 공유


DataTable에서 데이터 보기

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

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

팁 (조언)

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

메서드는 Select 에 따라 DataViewRowState보거나 조작할 행의 버전을 결정합니다. 다음 표에서는 가능한 DataViewRowState 열거형 값을 설명합니다.

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

다음 예제에서는 DataSet 객체를 필터링하여 DataViewRowState로 설정된 행만 작업하게 합니다.

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보다 큰 경우 CustLName으로 정렬된 모든 행을 참조하는 또 다른 DataRow 배열을 반환합니다. 행의 정보를 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");

참고하십시오