다음을 통해 공유


행 찾는 방법

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

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

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

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

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

다음 코드 예제에서는 단일 열 정렬 순서를 사용하여 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());  

참고하십시오