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