Freigeben über


Suchen von Zeilen

Sie können nach Zeilen anhand ihrer Sortierschlüsselwerte suchen, indem Sie die Find- und FindRows-Methoden des DataView verwenden. Die Groß-/Kleinschreibung von Suchwerten in den Find und FindRows Methoden wird durch die CaseSensitive Eigenschaft der zugrunde liegenden DataTablebestimmt. Suchwerte müssen vorhandenen Sortierschlüsselwerten in ihrer Gesamtheit entsprechen, um ein Ergebnis zurückzugeben.

Die Find-Methode gibt eine Ganzzahl mit dem Index des DataRowView zurück, das den Suchkriterien entspricht. Wenn mehrere Zeilen den Suchkriterien entsprechen, wird nur der Index des ersten Abgleichs DataRowView zurückgegeben. Wenn keine Übereinstimmungen gefunden werden, gibt Find -1 zurück.

Verwenden Sie die Methode FindRows, um Suchergebnisse zurückzugeben, die mit mehreren Zeilen übereinstimmen. FindRows funktioniert genau wie die Find Methode, mit der Ausnahme, dass ein DataRowView Array zurückgegeben wird, das auf alle übereinstimmenden Zeilen in der DataView verweist. Wenn keine Übereinstimmungen gefunden werden, ist das DataRowView Array leer.

Um die Methoden Find oder FindRows zu verwenden, müssen Sie eine Sortierreihenfolge entweder durch Einstellen von ApplyDefaultSort auf true oder durch die Verwendung der Sort-Eigenschaft angeben. Wenn keine Sortierreihenfolge angegeben ist, wird eine Ausnahme ausgelöst.

Die Find Methoden FindRows verwenden ein Array von Werten als Eingabe, deren Länge der Anzahl der Spalten in der Sortierreihenfolge entspricht. Bei einer Sortierung nach einer einzelnen Spalte können Sie einen einzelnen Wert übergeben. Bei Sortierreihenfolgen, die mehrere Spalten enthalten, übergeben Sie ein Array von Objekten. Beachten Sie, dass für eine Sortierung nach mehreren Spalten die Werte im Objektarray mit der Reihenfolge der Spalten übereinstimmen müssen, die in der Sort Eigenschaft der DataView angegeben sind.

Das folgende Codebeispiel zeigt, wie die Methode Find für eine DataView mit einer einzelnen Spaltensortierung aufgerufen wird.

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

Wenn Ihre Sort Eigenschaft mehrere Spalten angibt, müssen Sie wie im folgenden Codebeispiel ein Objektarray mit den Suchwerten für jede Spalte in der durch die Sort Eigenschaft angegebenen Reihenfolge übergeben.

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

Siehe auch