DataView 提供了幾項用於對 DataTable 中的數據進行排序和篩選的功能:
- 使用 Sort 屬性,您可以指定單個或多個列排序順序幷包含 ASC(升序)和 DESC(降序)參數。
- 可以使用 ApplyDefaultSort 屬性自動以升序創建基於表的一個或多個主鍵列的排序順序。只有當 Sort 屬性爲空引用或空字符串時以及表已定義主鍵時,ApplyDefaultSort 才適用。
- 使用 RowFilter 屬性,您可以根據行的列值來指定行的子集。有關 RowFilter 屬性的有效表達式的更多信息,請參見有關 DataColumn 類的 Expression 屬性的參考信息。
如果要返回對數據的特定查詢的結果(而不是提供數據子集的動態視圖)以實現最佳性能,請使用 DataView 的 Find 或 FindRows 方法,而不是設置 RowFilter 屬性。設置 RowFilter 屬性會使數據的索引被重新生成,從而增加應用程序的系統開銷並降低性能。最好將 RowFilter 屬性用於其中的綁定控件顯示篩選結果的數據綁定應用程序。Find 和 FindRows 方法會利用當前的索引,而不需要重新生成索引。有關 Find 和 FindRows 方法的更多信息,請參見搜索 DataView。
- 使用 RowStateFilter 屬性,您可以指定要查看的行版本。DataView 根據基礎行的 RowState 來隱式地管理要公開哪些行版本。例如,如果 RowStateFilter 設置爲 DataViewRowState.Deleted,由於不存在 Current 行版本,DataView 將公開所有 Deleted 行的 Original 行版本。可以使用 DataRowView 的 RowVersion 屬性來確定要公開行的哪些行版本。
下表顯示了 DataViewRowState 選項。
DataViewRowState |
說明 |
---|
CurrentRows |
所有 Unchanged、Added 和 Modified 行的 Current 行版本。這是默認選項。 |
Added |
所有 Added 行的 Current 行版本。 |
Deleted |
所有 Deleted 行的 Original 行版本。 |
ModifiedCurrent |
所有 Modified 行的 Current 行版本。 |
ModifiedOriginal |
所有 Modified 行的 Original 行版本。 |
None |
沒有行。 |
OriginalRows |
所有 Unchanged、Modified 和 Deleted 行的 Original 行版本。 |
Unchanged |
所有 Unchanged 行的 Current 行版本。 |
有關行狀態和行版本的更多信息,請參見行狀態與行版本。
以下代碼示例創建一個視圖,該視圖顯示所有庫存量小於或等於再訂購量的產品,這些產品首先按供應商 ID 排序,然後按產品名稱排序。
[Visual Basic]
Dim prodView As DataView = New DataView(prodDS.Tables("Products"), _
"UnitsInStock <= ReorderLevel", _
"SupplierID, ProductName", _
DataViewRowState.CurrentRows)
[C#]
DataView prodView = new DataView(prodDS.Tables["Products"],
"UnitsInStock <= ReorderLevel",
"SupplierID, ProductName",
DataViewRowState.CurrentRows);