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

1、使用 Select 方法过滤

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

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

注意,这个语句和 ANSI-SQL 类似。从本质上讲,他们是 ANSI-SQL 的子集,下列区别:因为 DataSet 可以保存多张关联表,所以过滤器也可以过滤这些关联表。下例中,使用 Child 关键字过滤 Orders 和 Customers。

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

Select 函数返回行数组,你可以通过 foreach 语句迭代这个数组。

 

2、使用 DataViews 过滤和排序

 
使用 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 用于升序和降序。

 
            // 基于 CustomerID 列排序
myDataView.Sort = "CustomerID"; // 筛选 CustomerID 为 ALFKI 的行
myDataView.RowFilter = "CustomerID = 'ALFKI'";
你也可以基于行的状态进行过滤(Deleted,New,等等)。下例演示了过滤 Deleted 状态行。
 
    myDataView.RowStateFilter = DataViewRowState.Deleted;
 
原文链接:

ADO.NET 快速入门(十):过滤数据的更多相关文章

  1. vue 快速入门 系列 —— 侦测数据的变化 - [基本实现]

    其他章节请看: vue 快速入门 系列 侦测数据的变化 - [基本实现] 在 初步认识 vue 这篇文章的 hello-world 示例中,我们通过修改数据(app.seen = false),页面中 ...

  2. vue 快速入门 系列 —— 侦测数据的变化 - [vue 源码分析]

    其他章节请看: vue 快速入门 系列 侦测数据的变化 - [vue 源码分析] 本文将 vue 中与数据侦测相关的源码摘了出来,配合上文(侦测数据的变化 - [基本实现]) 一起来分析一下 vue ...

  3. vue 快速入门 系列 —— 侦测数据的变化 - [vue api 原理]

    其他章节请看: vue 快速入门 系列 侦测数据的变化 - [vue api 原理] 前面(侦测数据的变化 - [基本实现])我们已经介绍了新增属性无法被侦测到,以及通过 delete 删除数据也不会 ...

  4. ADO.NET 快速入门(十四):使用 SQL Server 检索数据

    SqlDataReader 类提供了一种从数据源读取数据记录只进流的方法.如果想使用 OLE DB 接口的数据库或者 SQL Server7.0 之前的版本,请参考文章:使用 OLE DB 检索数据. ...

  5. ADO.NET 快速入门(十二):从 SQL Server 生成 XML 数据

    本文演示如何使用2种不同的方法从 SQL Server 生成 XML.   方法1:使用了 SqlCommand 的 ExecuteXmlReader 方法获取 XmlReader,然后使用 Data ...

  6. ADO.NET 快速入门(十五):ADO 应用转换为 ADO.NET

    这是一个已经移植到 .NET 的 ADO 应用的例子.也演示了单向.只读.快速 DataReader 的使用.它演示如何使用 DataView 类从 DataSet 获取一个 Table 和 操作一个 ...

  7. ADO.NET 快速入门(十三):使用 OLE DB 检索数据

    OleDbDataReader 类提供了一种从数据源读取数据记录只进流的方法.如果想使用 SQL Server 7.0 或者更高版本,请参考文章:使用 SQL Server 检索数据.   OleDb ...

  8. ADO.NET 快速入门(九):使用关系型数据

    DataSet 可以包含非关联表,也可以包含关联表.你可以把 DataSet 想象成一个文档数据.事实上,除了 DataSet 是基于层级模型的,其它和 XML 数据文档是一样的.由于数据通常存储在关 ...

  9. ADO.NET 快速入门(八):处理 Errors

    除了 Try/Catch 和 Exceptions 以外,新的 ADO.NET 数据框架也允许在 DataSet 的每行数据添加错误信息.如果 Updates 或者其他操作失败,SqlDataAdap ...

随机推荐

  1. Java [Leetcode 110]Balanced Binary Tree

    题目描述: Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced b ...

  2. 在Windows下编译ffmpeg完全手册

    本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...

  3. HDU 1247 Hat’s Words

    Hat’s Words Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  4. 题目1437:To Fill or Not to Fill:贪心算法解决加油站选择问题(未解决)

    //贪心算法解决加油站选择问题 //# include<iostream> # include<stdio.h> using namespace std; # include& ...

  5. 迁移web.py项目至git@osc的项目演示平台

    1. 开启演示平台 选择WSGI,输入应用名称,即是演示网页的网址. 2. web.py代码迁移 将Python的site-packages目录下的web文件夹复制到代码目录下,与网页程序在同一个文件 ...

  6. android 拍照或者图库选择 压缩后 图片 上传

    通过拍照或者从相册里选择图片通过压缩并上传时很多应用的常用功能,记录一下实现过程 一:创建个临时文件夹用于保存压缩后需要上传的图片 /** * path:存放图片目录路径 */ private Str ...

  7. RabbitMQ (三) 发布/订阅 -摘自网络

    这篇博客中,我们会做一些改变,就是把一个消息发给多个消费者,这种模式称之为发布/订阅(类似观察者模式). 为了验证这种模式,我们准备构建一个简单的日志系统.这个系统包含两类程序,一类程序发动日志,另一 ...

  8. redis.conf的配置

    daemonize yes   :  redis server 实例是否以后台方式运行 , no:不以后台方式运行(默认) , yes:以后台方式运行. requirepass 密码 :  密码最好长 ...

  9. ReactNative 踩坑小计

    使用ES6語法編寫Component時綁定事件需要用this.MethodName.bind(this),否則MethodName中無法使用this <TouchableHighlight on ...

  10. LNMP最新源码安装脚本(定期更新)

    Linux+Nginx+MySQL+PHP+Pureftpd+User manager for PureFTPd,脚本中用到的软件包大多最新版本,修复了User manager for PureFTP ...