有时候我们需要对数据表进行筛选,微软为我们封装了一个公共方法, DataTable.Select(),其用法如下:

Select()

Select(string filterExpression)

Select(string filterExpression, string sort)

Select(string filterExpression,string sort, DataViewRowState record States)

1)  Select()——获取所有 System.Data.DataRow 对象的数组;

2)  Select(string filterExpression)——按照主键顺序(如果没有主键,则按照添加顺序)获取与筛选条件相匹配的所有 System.Data.DataRow 对象的数组;

3)  Select(string filterExpression, string sort)——获取按照指定的排序顺序且与筛选条件相匹配的所有System.Data.DataRow 对象的数组;

4)  Select(string filterExpression, string sort, DataViewRowState recordStates)——获取与排序顺序中的筛选器以及指定的状态相匹配的所有。

举例说明:

有一个用户表,名称为 dtUsers,有id、姓名name、性别sex、年龄age

1.筛选所有的用户

DataRow[] drs1 =dtUsers.Select();

2.筛选所有性别为男的用户

DataRow[] drs2 =dtUsers.Select("sex = '男' ");

3.筛选所有性别为男且年龄在18岁以上的用户

DataRow[] drs3 =dtUsers.Select("sex = '男' and age >= 18");

4.筛选所有性别为男或者年龄在18岁以上的用户

DataRow[] drs4 =dtUsers.Select("sex = '男' or age >= 18");

5.筛选所有姓“夏”的用户

DataRow[] drs5 =dtUsers.Select("name like '夏%'");

6.筛选所有18岁以上的用户且按从大到小的顺序排序

DataRow[] drs5 =dtUsers.Select("age >=18","age desc");

7.上面最后一种用法没试过,有机会再列举出来。

注意事项

1.上面的Select操作是不区分大小写的(表字段不敏感,如pl-sql语法),如果需要区分大小写,需要将DataTable的caseSensitive属性设为true,例如上表的

dtUsers.CaseSensitive = true;//区分大小写

2.今天做开发发现一个问题,那边是对空白符的筛选无效,即dt.Select("colnume = '' ");经过调试后发现是因为我的数据源是从数据库中查询的,如下(表名dtOriginal):

我在对PRODUCTUNIT列进行筛选的时候,第一行的“制作一部”筛选出了结果,而后面4行并没有,因为是数据类型的问题——

解决办法有两种,一种是把所有的空白单元格替换成空格字符 ‘’,一种是在数据库查询的时候用decode()函数进行替换,例如SELECT DECODE(列名,NULL,'','列本身') FROM 表名(用replace函数在数据库中替换NULL是无效的)。

最新文章

  1. gbdt推导和代码
  2. GMap.NET使用一
  3. Minimum Path Sum [LeetCode]
  4. PyOpenGL利用文泉驿正黑字体显示中文字体
  5. jquery 源码学习(一)
  6. Uva120 Stacks of Flapjacks 翻煎饼
  7. HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR的使用 php
  8. sublime text 设置
  9. 一些神奇的JS功效
  10. 编程之美2.18 数组分割 原创解O(nlogn)的时间复杂度求解:
  11. tensorflow分类-【老鱼学tensorflow】
  12. 免费开源的diff软件“meld”-替代beyond compare的神器
  13. [MySQL]子语句的查询技巧
  14. EasyUI 如何结合JS导出Excel文件
  15. Unicode 字符串排序规则(二):如何比较字符串
  16. 【splunk】数据输入-文件目录 导入失败
  17. Flask 微博三方登录
  18. Hbase分布式安装部署过程
  19. js和jquery获取属性的区别
  20. crt文件上传下载

热门文章

  1. 【英语】Bingo口语笔记(71) - shit系列
  2. Hibernate-Criteria Queries
  3. Android下Fragment的动画切换效果
  4. JDBC数据源(DataSource)的简单实现
  5. 1005acm罚时
  6. 使用FTP搭建YUM
  7. Application Cache
  8. bluebird-Core API(一)
  9. Java多线程之 ThreadLocal
  10. PostgreSQL的 fdw 跨库使用