Sorok keresése
A sorokat a rendezési kulcs értékeinek megfelelően keresheti meg a
A Keresés metódus egy egész számot ad vissza a keresési feltételeknek megfelelő indexkel DataRowView . Ha egynél több sor felel meg a keresési feltételeknek, a rendszer csak az első egyező DataRowView indexét adja vissza. Ha nem található egyezés, a Keresés függvény -1 értéket ad vissza.
Ha több sornak megfelelő keresési eredményeket szeretne visszaadni, használja a FindRows metódust . A FindRows ugyanúgy működik, mint a Find metódus, azzal a kivétellel, hogy egy DataRowView-tömböt ad vissza, amely a DataView összes egyező sorára hivatkozik. Ha nem talál egyezést, a DataRowView tömb üres lesz.
A Keresés vagy a FindRows metódus használatához meg kell adnia egy rendezési sorrendet az ApplyDefaultSort igaz értékre állításával vagy a Rendezés tulajdonság használatával. Ha nincs megadva rendezési sorrend, a rendszer kivételt jelez.
A Find and FindRows metódusok egy értéktömböt használnak bemenetként, amelynek hossza megegyezik a rendezési sorrendben lévő oszlopok számával. Egyetlen oszlop rendezése esetén egyetlen értéket adhat át. Több oszlopot tartalmazó rendezési sorrendek esetén objektumtömböt ad át. Vegye figyelembe, hogy több oszlop rendezése esetén az objektumtömb értékeinek meg kell egyeznie a DataView Rendezés tulajdonságában megadott oszlopok sorrendjével.
Az alábbi példakód azt mutatja be, hogy a Find metódus egyetlen oszlop rendezési sorrendben van meghívva egy DataView-ra .
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());
Ha a Rendezés tulajdonság több oszlopot határoz meg, a Rendezés tulajdonság által megadott sorrendben kell átadnia egy objektumtömböt az egyes oszlopok keresési értékeivel, ahogyan az alábbi kód példában is látható.
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());