Megosztás a következőn keresztül:


Sorok keresése

A sorokat a rendezési kulcs értékeinek megfelelően keresheti meg a Find DataView/> metódusával.FindRows A Keresés és a FindRows metódus keresési értékeinek érzékenységét az alapul szolgáló DataTableCaseSensitive tulajdonság határozza meg. A keresési értékeknek teljes egészében meg kell egyezniük a meglévő rendezési kulcsértékekkel az eredmény visszaadásához.

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

Lásd még