Udostępnij przez


Znajdowanie wierszy

Możesz wyszukiwać wiersze według ich wartości klucza sortowania, korzystając z metod Find i FindRows elementu DataView. pl-PL: Wielkość liter wartości wyszukiwania w metodach Find i FindRows jest określana przez właściwość CaseSensitive bazowego elementu DataTable. 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 , który odpowiada kryteriom wyszukiwania. Jeśli więcej niż jeden wiersz spełnia kryteria wyszukiwania, zwracany jest tylko indeks pierwszego dopasowania DataRowView . Jeśli nie znaleziono dopasowań, Find zwraca wartość -1.

Aby zwrócić wyniki wyszukiwania zgodne z wieloma wierszami, użyj metody FindRows. 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 znaleziono dopasowań, tablica DataRowView będzie pusta.

Aby użyć metod Find lub FindRows, należy określić kolejność sortowania, ustawiając ApplyDefaultSort na true lub korzystając z 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ść. Przy kolejności sortowania zawierającej 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 Sort właściwości DataView.

Poniższy przykład kodu przedstawia metodę Find wywoływaną względem elementu DataView z pojedynczym porządkiem sortowania w kolumnie.

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 Sort właściwość, 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 także