다음을 통해 공유


행 찾는 방법

FindFindRows 메서드를 사용하여 DataView의 정렬 키 값에 따라 행을 검색할 수 있습니다. 기본 DataTableCaseSensitive 속성에 따라 FindFindRows 메서드에서 검색 값의 대/소문자 구분이 결정됩니다. 결과를 반환하려면 검색 값이 기존 정렬 키 값 전체와 일치해야 합니다.

메서드는 Find 검색 조건과 일치하는 인덱 DataRowView 스가 있는 정수를 반환합니다. 둘 이상의 행이 검색 조건과 일치하면 첫 번째 일치 DataRowView 항목의 인덱스만 반환됩니다. 일치하는 항목이 없으면 -1을 Find 반환합니다.

여러 행과 일치하는 검색 결과를 반환하려면 이 메서드를 FindRows 사용합니다. FindRowsFind에서 DataRowView 일치하는 모든 행을 참조하는 배열을 반환한다는 점을 제외하고 메서드와 마찬가지로 작동합니다. 일치하는 항목이 없으면 배열이 DataRowView 비어 있습니다.

Find 또는 FindRows 메서드를 사용하려면, ApplyDefaultSorttrue로 설정하거나 Sort 속성을 사용하여 정렬 순서를 지정해야 합니다. 정렬 순서를 지정하지 않으면 예외가 발생합니다.

Find 메서드는 FindRows 값 배열을 입력으로 사용합니다. 이 값의 길이는 정렬 순서의 열 수와 일치합니다. 단일 열에 대한 정렬의 경우 단일 값을 전달할 수 있습니다. 여러 열을 포함하는 정렬 순서의 경우 개체 배열을 전달합니다. 여러 열에 대한 정렬의 경우 개체 배열의 값은 Sort 속성에 지정된 열의 순서와 일치해야 합니다.

다음 코드 예제에서는 DataView에 대해 단일 열 정렬 순서로 Find 메서드가 호출되는 것을 보여줍니다.

Dim custView As DataView = _
  New DataView(custDS.Tables("Customers"), "", _
  "CompanyName", DataViewRowState.CurrentRows)

Dim rowIndex As Integer = custView.Find("The Cracker Box")

If rowIndex = -1 Then
  Console.WriteLine("No match found.")
Else
  Console.WriteLine("{0}, {1}", _
    custView(rowIndex)("CustomerID").ToString(), _
    custView(rowIndex)("CompanyName").ToString())
End If
DataView custView = new DataView(custDS.Tables["Customers"], "",
  "CompanyName", DataViewRowState.CurrentRows);

int rowIndex = custView.Find("The Cracker Box");

if (rowIndex == -1)
  Console.WriteLine("No match found.");
else
  Console.WriteLine("{0}, {1}",
    custView[rowIndex]["CustomerID"].ToString(),
    custView[rowIndex]["CompanyName"].ToString());

Sort 속성이 여러 열을 지정하는 경우 다음 코드 예제와 같이 속성에서 지정한 Sort 순서대로 각 열에 대한 검색 값이 있는 개체 배열을 전달해야 합니다.

Dim custView As DataView = _
  New DataView(custDS.Tables("Customers"), "", _
  "CompanyName, ContactName", _
  DataViewRowState.CurrentRows)

Dim foundRows() As DataRowView = _
  custView.FindRows(New object() {"The Cracker Box", "Liu Wong"})

If foundRows.Length = 0 Then
  Console.WriteLine("No match found.")
Else
  Dim myDRV As DataRowView
  For Each myDRV In foundRows
    Console.WriteLine("{0}, {1}", _
      myDRV("CompanyName").ToString(), myDRV("ContactName").ToString())
  Next
End If
DataView custView = new DataView(custDS.Tables["Customers"], "",
  "CompanyName, ContactName",
  DataViewRowState.CurrentRows);

DataRowView[] foundRows =
  custView.FindRows(new object[] {"The Cracker Box", "Liu Wong"});

if (foundRows.Length == 0)
  Console.WriteLine("No match found.");
else
  foreach (DataRowView myDRV in foundRows)
    Console.WriteLine("{0}, {1}", myDRV["CompanyName"].ToString(),
      myDRV["ContactName"].ToString());

참고하십시오