C# DataTable.Select() 筛选数据
有时候我们需要对数据表进行筛选,微软为我们封装了一个公共方法, 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() 筛选数据相关推荐
- R语言dplyr处理dataframe:使用mutate函数生成新的列、recode函数进行数据编码、rename函数重命名字段、arrange排序数据列、select筛选数据、filter过滤数据
R语言使用dplyr包处理dataframe数据:使用mutate函数生成新的数据列.recode函数进行数据编码.rename函数重命名字段.arrange函数对数据列内容排序.select筛选数据 ...
- datatable筛选条件_在DataTable中执行DataTable.Select(条件)
.在DataTable中执行DataTable.Select("条件")返回DataTable: // // 执行DataTable中的查询返回新的DataTable // // ...
- DataSource绑定DataTable.Select()显示system.data.DataRow问题解决的方法
有时候我们须要在控件中绑定DataTable中设定条件过滤后的数据,此时,在winForm环境中,一些控件不能正确绑定并显示数据内容.这是由于DataTable.Select()返回的是DataRow ...
- R048---UiPath中四种筛选数据的方法
一.缘起 用RPA处理数据时,对数据进行筛选,是个基本操作,这里将4种方法逐一罗列,供不同场景下选用. 二.使用方法 方法1:用Filter Data Table,这种方法适合普通业务用户. 拖拽该活 ...
- pandas根据数据类型筛选数据
pandas根据数据类型筛选数据 pandas根据数据类型筛选对应的特征列,因为不同的数据类型列往往对应不同的后续特征处理方法. select_dtypes是我们使用的主要函数,其中包含两个核心参数, ...
- 在DataTable中进行数据查询 (转)
在实际编程工程中,常常遇到这样的情况:DataTable并不是数据库中的,或者DataTable尚未写到数据库,或者从数据库中读出的DataTable已经在本地被改动,又没有写回数据库(可能还要作其他 ...
- 在DataTable中执行DataTable.Select(条件),
1.在DataTable中执行DataTable.Select("条件")返回DataTable: // <summary> // 执行DataTable中的查询返回 ...
- 根据下拉框的内容筛选数据
首先查询出来你需要的数据:var varLinq = -------; 声明一个空的字符串:string Lists = ""; For循环上面查询出来的数据,把查询数据放入到一个 ...
- 如何根据参数选择 Excel 并筛选数据后生成报表
需求说明 有某超市 2020 年各月产品采购明细数据,按月存放在"HDatas"的 Excel 文件,如下 数据格式如下 报表要求: 输入开始及结束日期两个参数(不跨月)后,找到对 ...
- DataTable select过滤
Vs.Net的DataTable进行数据的过滤与PB的DataWindow的过滤是不同概念的: PB的DataWindow进行数据过滤时是将数据放入的DataWindow的Filter!缓冲区中: V ...
最新文章
- BERT中的黑暗秘密
- 有向连通图增加多少边构成强联通(hdu3836,poj1236)
- 对现有的所能找到的DDOS代码(攻击模块)做出一次分析----UDP篇
- iTextSharp应用,生成pdf
- Java增强之并发编程
- java web js加版本号_[Java教程]js 比较版本号(一)
- 前端开发的难点到底在什么地方?
- 怎么处理table 与 form绑定的问题(现象:点击取消后 修改的值还是在table显示)
- 几种自动化功能测试的工具的认识
- 易语言教程_v20200926
- 系统自动校时后发广播android,校园定时播放软件
- 自学3D游戏建模有哪些教材?自学难不难?能学成就业吗
- Java虚拟机——Parallel Scavenge收集器
- uniapp——uni-admin后台管理系统(使用uniCloud免费云服务器)
- STM32 F446RET6多通道ADC采集
- 各个版本Microsoft Visual C++运行库下载
- 消除WSL中ls Windows文件夹时背光配色的方法
- php utf8生僻字,支持生僻字且自动识别utf-8编码的php汉字转拼音类_php技巧
- 我在深圳面试汇总(--持续更新中)
- 4本Python必读的入门书籍
热门文章
- Vue 项目在 IE11 中数据更改后页面数据无变化
- django小站,数据3w+
- Liunx安装 jemalloc == 内存管理工具
- Android开发周报:Android 8.0开始推送、微店插件化实践
- OpenStack、CloudStack、Eucalyptus和vCloud Director四大主流云平台怎么选?
- 深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
- java javax.crypto.mac dofinal_Java密码学 - 2. MAC example
- glassfish启动后不能进入部署页面_使用Jenkins实现项目持续集成部署
- springboot starter的一个问题
- 执行cmd并获得结果_用JAVA执行CMD命令备份PG数据库,解决需要口令的问题