共用方式為


尋找數據列

您可以使用 FindFindRows 方法根據 DataView 的排序索引鍵值來搜尋數據列。 在FindFindRows方法中,搜尋值的大小寫敏感性由底層的CaseSensitive屬性的DataTable決定。 搜尋值必須符合其整體的現有排序索引鍵值,才能傳回結果。

該方法會回傳一個整數索引,對應於符合搜尋條件的DataRowView。 若有多列符合搜尋條件,則僅回傳第一個匹配 DataRowView 的索引。 若未找到匹配,則 Find 回傳 -1。

若要回傳多列匹配的搜尋結果,請使用以下 FindRows 方法。 FindRows 運作方式與該 Find 方法相同,但會回傳一個 DataRowView 陣列,參考 DataView 中所有相符的列。 若未找到匹配,陣 DataRowView 列將為空。

要使用 Find or FindRows 方法,你必須透過設定 ApplyDefaultSorttrue 使用 屬性 Sort 來指定排序順序。 如果未指定排序順序,則會拋出例外狀況。

FindFindRows方法的輸入是一個長度與排序順序欄位數相符的數值陣列。 在單一數據行上排序的情況下,您可以傳遞單一值。 針對包含多個欄位的排序,您可以傳遞物件的陣列。 請注意,對於多欄位的排序,物件陣列中的值必須與 Sort 屬性中欄位的順序相符。

以下程式碼範例展示了 Find 該方法在對 a DataView 的單欄排序順序下被呼叫。

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

如果你 Sort 的屬性指定了多欄,你必須依照屬性指定的 Sort 順序,傳遞一個物件陣列,裡面有每欄的搜尋值,如下述的程式碼範例。

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

另請參閱