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