使用 DataView 对数据排序和筛选

使用 DataView 对数据排序和筛选

DataView 提供了几项用于对 DataTable 中的数据进行排序和筛选的功能:

  • 使用 Sort 属性,您可以指定单个或多个列排序顺序并包含 ASC(升序)和 DESC(降序)参数。
  • 可以使用 ApplyDefaultSort 属性自动以升序创建基于表的一个或多个主键列的排序顺序。只有当 Sort 属性为空引用或空字符串时以及表已定义主键时,ApplyDefaultSort 才适用。
  • 使用 RowFilter 属性,您可以根据行的列值来指定行的子集。有关 RowFilter 属性的有效表达式的更多信息,请参见有关 DataColumn 类的 Expression 属性的参考信息。

    如果要返回对数据的特定查询的结果(而不是提供数据子集的动态视图)以实现最佳性能,请使用 DataViewFindFindRows 方法,而不是设置 RowFilter 属性。设置 RowFilter 属性会使数据的索引被重新生成,从而增加应用程序的系统开销并降低性能。最好将 RowFilter 属性用于其中的绑定控件显示筛选结果的数据绑定应用程序。FindFindRows 方法会利用当前的索引,而不需要重新生成索引。有关 FindFindRows 方法的更多信息,请参见搜索 DataView。

  • 使用 RowStateFilter 属性,您可以指定要查看的行版本。DataView 根据基础行的 RowState 来隐式地管理要公开哪些行版本。例如,如果 RowStateFilter 设置为 DataViewRowState.Deleted,由于不存在 Current 行版本,DataView 将公开所有 Deleted 行的 Original 行版本。可以使用 DataRowView RowVersion 属性来确定要公开行的哪些行版本。

    下表显示了 DataViewRowState 选项。

    DataViewRowState说明
    CurrentRows所有 UnchangedAddedModified 行的 Current 行版本。这是默认选项。
    Added所有 Added 行的 Current 行版本。
    Deleted所有 Deleted 行的 Original 行版本。
    ModifiedCurrent所有 Modified 行的 Current 行版本。
    ModifiedOriginal所有 Modified 行的 Original 行版本。
    None没有行。
    OriginalRows所有 UnchangedModifiedDeleted 行的 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);
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值