ADO.NET 快速入门(十):过滤数据

咱们有不少方法来过滤数据。一种是在数据库命令级别,利用 where 子句查询过滤数据。另外一种是在数据填充到 DataSet 之后过滤数据。本篇讨论后者。
 
一旦数据填充到 DataSet,你可使用 DataSet 的方法获取一个数据子集。
 

一、使用 Select 方法过滤数据库

设想一下 DataSet 填充了 Customers 和 Orders 两个表。你可使用 Select  方法返回一组行,为名叫 Kelly 的 Customers 过滤数据。数组

 
    myRowArray = dsCustomers.Select("ContactName like 'Kelly%'");

 

注意,这个语句和 ANSI-SQL 相似。从本质上讲,他们是 ANSI-SQL 的子集,下列区别:由于 DataSet 能够保存多张关联表,因此过滤器也能够过滤这些关联表。下例中,使用 Child 关键字过滤 Orders 和 Customers。asp.net

 
    myRowArray = dsCustomers.Select("ContactName like 'Kelly%' AND [child].OrderDate = '7/26/68'");

 

Select 函数返回行数组,你能够经过 foreach 语句迭代这个数组。函数

 

二、使用 DataViews 过滤和排序ui

 
使用 DataView 对象,你能够在 DataSet 上设置多个过滤器,创建对他们的绑定,等等。DataView 可使用 Select 中一样的查询语法规则过滤数据。可是过滤器是动态的。若是添加一行数据,而且知足过滤要求,那么对 View 可见。Views 能够排序和过滤。过滤器包括 Data 过滤器和 Version 过滤器(Current、New、Modified、Deleted)。能够经过 DataSet 内部的 DataTable 建立一个DataView 对象。
 
 
    DataView myDataView = new DataView(myDataSet.Tables["Customers"]);

 

你可使用上例中 Select 方法一样的查询过滤语法,在 RowFilter 属性上设置一个过滤器。设置排序,使用逗号分隔的排序列,其次是 ASC(默认和可选)或者 DESC 用于升序和降序。spa

 
            // 基于 CustomerID 列排序
            myDataView.Sort = "CustomerID";

            // 筛选 CustomerID 为 ALFKI 的行
            myDataView.RowFilter = "CustomerID = 'ALFKI'";

 

你也能够基于行的状态进行过滤(Deleted,New,等等)。下例演示了过滤 Deleted 状态行。
 
    myDataView.RowStateFilter = DataViewRowState.Deleted;
 
原文连接: