Znajdowanie wierszy

Wiersze można wyszukiwać według ich wartości klucza sortowania przy użyciu Find metod i FindRows .DataView Wielkość liter wartości wyszukiwania w metodach Find and FindRows jest określana przez właściwość CaseSensitive bazowego DataTableelementu . Wartości wyszukiwania muszą być zgodne z istniejącymi wartościami klucza sortowania w całości, aby zwrócić wynik.

Metoda Find zwraca liczbę całkowitą z indeksem DataRowView zgodnym z kryteriami wyszukiwania. Jeśli więcej niż jeden wiersz pasuje do kryteriów wyszukiwania, zwracany jest tylko indeks pierwszego pasującego elementu DataRowView . Jeśli nie znaleziono dopasowań, funkcja Znajdź zwraca wartość -1.

Aby zwrócić wyniki wyszukiwania pasujące do wielu wierszy, użyj metody FindRows . Funkcja FindRows działa podobnie jak metoda Find , z tą różnicą, że zwraca tablicę DataRowView , która odwołuje się do wszystkich pasujących wierszy w widoku DataView. Jeśli nie zostaną znalezione dopasowania, tablica DataRowView będzie pusta.

Aby użyć metod Find lub FindRows , należy określić kolejność sortowania, ustawiając właściwość ApplyDefaultSort na true lub używając właściwości Sort . Jeśli nie określono kolejności sortowania, zostanie zgłoszony wyjątek.

Metody Find i FindRows przyjmują tablicę wartości jako dane wejściowe, których długość odpowiada liczbie kolumn w kolejności sortowania. W przypadku sortowania w jednej kolumnie można przekazać pojedynczą wartość. W przypadku zamówień sortowania zawierających wiele kolumn należy przekazać tablicę obiektów. Należy pamiętać, że w przypadku sortowania w wielu kolumnach wartości w tablicy obiektów muszą być zgodne z kolejnością kolumn określonych we właściwości Sort obiektu DataView.

Poniższy przykład kodu przedstawia metodę Find wywoływaną względem elementu DataView z pojedynczą kolejnością sortowania kolumn.

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

Jeśli właściwość Sort określa wiele kolumn, należy przekazać tablicę obiektów z wartościami wyszukiwania dla każdej kolumny w kolejności określonej przez właściwość Sort, jak w poniższym przykładzie kodu.

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

Zobacz też