Hledání řádků
Řádky můžete vyhledat podle jejich hodnot klíče řazení pomocí Find metod a FindRows metod DataView. Citlivost případu vyhledávacích hodnot v metodách Find a FindRows je určena CaseSensitive vlastnost podkladové DataTable. Hodnoty hledání musí odpovídat existujícím hodnotám klíče řazení v celém rozsahu, aby se vrátil výsledek.
Metoda Find vrátí celé číslo s indexem DataRowView , který odpovídá kritériím hledání. Pokud kritéria hledání odpovídá více než jednomu řádku, vrátí se pouze index prvního odpovídajícího objektu DataRowView . Pokud nebyly nalezeny žádné shody, funkce Najít vrátí hodnotu -1.
Pokud chcete vrátit výsledky hledání, které odpovídají více řádkům, použijte metodu FindRows . FindRows funguje stejně jako Find metoda s tím rozdílem, že vrací pole DataRowView, které odkazuje na všechny odpovídající řádky v DataView. Pokud se nenajde žádná shoda, pole DataRowView bude prázdné.
Chcete-li použít Find nebo FindRows metody, musíte zadat pořadí řazení buď nastavením ApplyDefaultSort na true nebo pomocí Sort vlastnost. Pokud není zadáno žádné pořadí řazení, vyvolá se výjimka.
Metody Find a FindRows přebírají jako vstup pole hodnot, jejichž délka odpovídá počtu sloupců v pořadí řazení. V případě řazení v jednom sloupci můžete předat jednu hodnotu. U pořadí řazení obsahujících více sloupců předáte pole objektů. Všimněte si, že pro řazení podle více sloupců musí hodnoty v poli objektu odpovídat pořadí sloupců zadaných ve vlastnosti Sort DataView.
Následující příklad kódu ukazuje Metodu Find , která je volána proti DataView s jedním pořadím řazení sloupců.
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());
Pokud vlastnost Sort určuje více sloupců, musíte předat pole objektů s vyhledávacími hodnotami pro každý sloupec v pořadí určeném vlastností Sort , jako v následujícím příkladu kódu.
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());