Sdílet prostřednictvím


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

Viz také