Dela via


Hitta rader

Du kan söka efter rader enligt deras sorteringsnyckelvärden med hjälp Find av metoderna DataViewoch FindRows i . Skiftlägeskänsligheten för sökvärden i metoderna Find och FindRows bestäms av egenskapen CaseSensitive för den underliggande DataTable. Sökvärden måste matcha befintliga sorteringsnyckelvärden i sin helhet för att returnera ett resultat.

Metoden Find returnerar ett heltal med indexet DataRowView för det som matchar sökvillkoren. Om mer än en rad matchar sökvillkoren returneras endast indexet för den första matchande DataRowView . Om inga matchningar hittas returnerar Find -1.

Om du vill returnera sökresultat som matchar flera rader använder du metoden FindRows . FindRows fungerar precis som metoden Hitta , förutom att den returnerar en DataRowView-matris som refererar till alla matchande rader i DataView. Om inga matchningar hittas är DataRowView-matrisen tom.

Om du vill använda metoderna Find eller FindRows måste du ange en sorteringsordning antingen genom att ange ApplyDefaultSort till true eller med hjälp av egenskapen Sortera . Om ingen sorteringsordning anges genereras ett undantag.

Metoderna Find och FindRows tar en matris med värden som indata vars längd matchar antalet kolumner i sorteringsordningen. När det gäller en sortering i en enda kolumn kan du skicka ett enda värde. För sorteringsordningar som innehåller flera kolumner skickar du en matris med objekt. Observera att för en sortering på flera kolumner måste värdena i objektmatrisen matcha ordningen på de kolumner som anges i egenskapen Sortera i DataView.

I följande kodexempel visas metoden Sök som anropas mot en DataView med en enda kolumnsorteringsordning.

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

Om egenskapen Sortera anger flera kolumner måste du skicka en objektmatris med sökvärdena för varje kolumn i den ordning som anges av egenskapen Sortera , som i följande kodexempel.

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

Se även