DataView 提供了几项用于对 DataTable 中的数据进行排序和筛选的功能:
如果要返回对数据的特定查询的结果(而不是提供数据子集的动态视图)以实现最佳性能,请使用 DataView 的 Find 或 FindRows 方法,而不是设置 RowFilter 属性。设置 RowFilter 属性会使数据的索引被重新生成,从而增加应用程序的系统开销并降低性能。最好将 RowFilter 属性用于其中的绑定控件显示筛选结果的数据绑定应用程序。Find 和 FindRows 方法会利用当前的索引,而不需要重新生成索引。有关 Find 和 FindRows 方法的更多信息,请参见搜索 DataView。
下表显示了 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);