有时候我们需要对数据表进行筛选,微软为我们封装了一个公共方法, 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是无效的)。

转载自:https://www.cnblogs.com/programsky/p/4290024.html。

转载于:https://www.cnblogs.com/yoga21/p/8808023.html

C# DataTable.Select() 筛选数据相关推荐

  1. R语言dplyr处理dataframe:使用mutate函数生成新的列、recode函数进行数据编码、rename函数重命名字段、arrange排序数据列、select筛选数据、filter过滤数据

    R语言使用dplyr包处理dataframe数据:使用mutate函数生成新的数据列.recode函数进行数据编码.rename函数重命名字段.arrange函数对数据列内容排序.select筛选数据 ...

  2. datatable筛选条件_在DataTable中执行DataTable.Select(条件)

    .在DataTable中执行DataTable.Select("条件")返回DataTable: // // 执行DataTable中的查询返回新的DataTable // // ...

  3. DataSource绑定DataTable.Select()显示system.data.DataRow问题解决的方法

    有时候我们须要在控件中绑定DataTable中设定条件过滤后的数据,此时,在winForm环境中,一些控件不能正确绑定并显示数据内容.这是由于DataTable.Select()返回的是DataRow ...

  4. R048---UiPath中四种筛选数据的方法

    一.缘起 用RPA处理数据时,对数据进行筛选,是个基本操作,这里将4种方法逐一罗列,供不同场景下选用. 二.使用方法 方法1:用Filter Data Table,这种方法适合普通业务用户. 拖拽该活 ...

  5. pandas根据数据类型筛选数据

    pandas根据数据类型筛选数据 pandas根据数据类型筛选对应的特征列,因为不同的数据类型列往往对应不同的后续特征处理方法. select_dtypes是我们使用的主要函数,其中包含两个核心参数, ...

  6. 在DataTable中进行数据查询 (转)

    在实际编程工程中,常常遇到这样的情况:DataTable并不是数据库中的,或者DataTable尚未写到数据库,或者从数据库中读出的DataTable已经在本地被改动,又没有写回数据库(可能还要作其他 ...

  7. 在DataTable中执行DataTable.Select(条件),

    1.在DataTable中执行DataTable.Select("条件")返回DataTable: // <summary>  // 执行DataTable中的查询返回 ...

  8. 根据下拉框的内容筛选数据

    首先查询出来你需要的数据:var varLinq = -------; 声明一个空的字符串:string Lists = ""; For循环上面查询出来的数据,把查询数据放入到一个 ...

  9. 如何根据参数选择 Excel 并筛选数据后生成报表

    需求说明 有某超市 2020 年各月产品采购明细数据,按月存放在"HDatas"的 Excel 文件,如下 数据格式如下 报表要求: 输入开始及结束日期两个参数(不跨月)后,找到对 ...

  10. DataTable select过滤

    Vs.Net的DataTable进行数据的过滤与PB的DataWindow的过滤是不同概念的: PB的DataWindow进行数据过滤时是将数据放入的DataWindow的Filter!缓冲区中: V ...

最新文章

  1. BERT中的黑暗秘密
  2. 有向连通图增加多少边构成强联通(hdu3836,poj1236)
  3. 对现有的所能找到的DDOS代码(攻击模块)做出一次分析----UDP篇
  4. iTextSharp应用,生成pdf
  5. Java增强之并发编程
  6. java web js加版本号_[Java教程]js 比较版本号(一)
  7. 前端开发的难点到底在什么地方?
  8. 怎么处理table 与 form绑定的问题(现象:点击取消后 修改的值还是在table显示)
  9. 几种自动化功能测试的工具的认识
  10. 易语言教程_v20200926
  11. 系统自动校时后发广播android,校园定时播放软件
  12. 自学3D游戏建模有哪些教材?自学难不难?能学成就业吗
  13. Java虚拟机——Parallel Scavenge收集器
  14. uniapp——uni-admin后台管理系统(使用uniCloud免费云服务器)
  15. STM32 F446RET6多通道ADC采集
  16. 各个版本Microsoft Visual C++运行库下载
  17. 消除WSL中ls Windows文件夹时背光配色的方法
  18. php utf8生僻字,支持生僻字且自动识别utf-8编码的php汉字转拼音类_php技巧
  19. 我在深圳面试汇总(--持续更新中)
  20. 4本Python必读的入门书籍

热门文章

  1. Vue 项目在 IE11 中数据更改后页面数据无变化
  2. django小站,数据3w+
  3. Liunx安装 jemalloc == 内存管理工具
  4. Android开发周报:Android 8.0开始推送、微店插件化实践
  5. OpenStack、CloudStack、Eucalyptus和vCloud Director四大主流云平台怎么选?
  6. 深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
  7. java javax.crypto.mac dofinal_Java密码学 - 2. MAC example
  8. glassfish启动后不能进入部署页面_使用Jenkins实现项目持续集成部署
  9. springboot starter的一个问题
  10. 执行cmd并获得结果_用JAVA执行CMD命令备份PG数据库,解决需要口令的问题