Freigeben über


Durchsuchen einer DataView

Mit den Methoden Find und FindRows der DataView können Sie nach den Sortierschlüsselwerten von Zeilen suchen. In den Methoden Find und FindRows wird die Berücksichtigung der Groß- und Kleinschreibung in Suchwerten durch die CaseSensitive-Eigenschaft der zugrunde liegenden DataTable festgelegt. Suchwerte müssen vollständig mit den vorhandenen Sortierschlüsselwerten übereinstimmen, um ein Ergebnis zurückzugeben.

Die Find-Methode gibt eine ganze Zahl mit dem Index der DataRowView zurück, der mit den Suchkriterien übereinstimmt. Wenn mehr als eine Zeile mit den Suchkriterien übereinstimmt, wird nur der Index der ersten Übereinstimmung mit DataRowView zurückgegeben. Wird keine Übereinstimmung gefunden, gibt Find -1 zurück.

Mit der FindRows-Methode können Sie zu den Suchergebnissen zurückkehren, die mit mehreren Zeilen übereinstimmen. FindRows funktioniert wie die Find-Methode, außer dass sie ein DataRowView-Array zurückgibt, das auf alle übereinstimmenden Zeilen in der DataView verweist. Wenn keine Übereinstimmungen gefunden werden, ist das DataRowView-Array leer.

Wenn Sie die Methoden Find oder FindRows verwenden möchten, müssen Sie eine Sortierreihenfolge angeben, indem Sie entweder True für ApplyDefaultSort festlegen oder die Sort-Eigenschaft verwenden. Wenn keine Sortierreihenfolge angegeben wurde, wird eine Ausnahme ausgelöst.

Die Methoden Find und FindRows akzeptieren ein Array von Werten als Eingabe, dessen Länge mit der Anzahl der Spalten in der Sortierreihenfolge übereinstimmt. Bei der Sortierung einer einzelnen Spalte können Sie einen einzelnen Wert übergeben. Bei Sortierreihenfolgen mit mehreren Spalten übergeben Sie ein Array von Objekten. Beachten Sie, dass beim Sortieren mehrerer Spalten die Werte im Objektarray mit der Reihenfolge der Spalten übereinstimmen muss, die in der Sort-Eigenschaft der DataView angegeben wurde.

Das folgende Codebeispiel zeigt die Find-Methode, die gegen eine DataView mit einer Sortierreihenfolge für eine einzelne Spalte 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
[C#]
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 die Sort-Eigenschaft mehrere Spalten angibt, müssen Sie ein Objektarray mit Suchwerten für jede Spalte in der Reihenfolge angeben, die in der Sort-Eigenschaft angegeben wurde. Dies wird im folgenden Codebeispiel gezeigt.

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
[C#]
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

Anzeigen von Daten mit einer DataView | Erstellen einer DataView | DataTable-Klasse | DataView-Klasse