Delen via


Rijen zoeken

U kunt rijen zoeken op basis van hun sorteersleutelwaarden met behulp van de Find en FindRows methoden van de DataView. De hoofdlettergevoeligheid van zoekwaarden in de methoden Find en FindRows wordt bepaald door de eigenschap CaseSensitive van de onderliggende DataTablewaarde. Zoekwaarden moeten overeenkomen met bestaande sorteersleutelwaarden in hun geheel om een resultaat te retourneren.

De methode Zoeken retourneert een geheel getal met de index van de DataRowView zoekcriteria. Als meer dan één rij overeenkomt met de zoekcriteria, wordt alleen de index van de eerste overeenkomende DataRowView geretourneerd. Als er geen overeenkomsten worden gevonden, wordt -1 geretourneerd.

Als u zoekresultaten wilt retourneren die overeenkomen met meerdere rijen, gebruikt u de methode FindRows . FindRows werkt net als de methode Find , behalve dat deze een DataRowView-matrix retourneert die verwijst naar alle overeenkomende rijen in de DataView. Als er geen overeenkomsten worden gevonden, is de DataRowView-matrix leeg.

Als u de methoden Find of FindRows wilt gebruiken, moet u een sorteervolgorde opgeven door ApplyDefaultSort in te stellen op true of door de eigenschap Sort te gebruiken. Als er geen sorteervolgorde is opgegeven, wordt er een uitzondering gegenereerd.

De methoden Find en FindRows gebruiken een matrix met waarden als invoer waarvan de lengte overeenkomt met het aantal kolommen in de sorteervolgorde. In het geval van een sortering op één kolom kunt u één waarde doorgeven. Voor sorteervolgordes met meerdere kolommen geeft u een matrix met objecten door. Houd er rekening mee dat voor een sortering op meerdere kolommen de waarden in de objectmatrix moeten overeenkomen met de volgorde van de kolommen die zijn opgegeven in de eigenschap Sorteren van de DataView.

In het volgende codevoorbeeld ziet u de methode Find die wordt aangeroepen voor een DataView met één kolomsorteerdvolgorde.

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

Als de eigenschap Sorteren meerdere kolommen opgeeft, moet u een objectmatrix doorgeven met de zoekwaarden voor elke kolom in de volgorde die is opgegeven door de eigenschap Sorteren , zoals in het volgende codevoorbeeld.

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

Zie ook