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.上面最后一种用法没试过,有机会再列举出来。

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

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

时间: 2024-07-30 17:00:46

C# DataTable.Select() 筛选数据的相关文章

[转]dataTable select() 方法

DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Datatable中经常用到的一个方法——Select,微软提供了四个函数的重载,分别是 Select() Select(string filterExpression) Select(string filterExpression, string sort) Select(string filterExpression,string sort, DataViewRowSt

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

有时候我们须要在控件中绑定DataTable中设定条件过滤后的数据,此时,在winForm环境中,一些控件不能正确绑定并显示数据内容.这是由于DataTable.Select()返回的是DataRow[]类型的行数组.没有行列相关架构值.而控件如ListBox.comboBox等不能识别行数组中的列.读不到行列架构值,所以无法正常显示. 解决的方法是用DataView进行转换,即在DataView中对DataTable过滤数据. DataView构造函数例如以下: DataView ( Data

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

有时候我们需要在控件中绑定DataTable中设定条件过滤后的数据,此时,在winForm环境中,一些控件不能正确绑定并显示数据内容,这是因为DataTable.Select()返回的是DataRow[]类型的行数组,没有行列相关架构值.而控件如ListBox.comboBox等不能识别行数组中的列,读不到行列架构值,所以无法正常显示. 解决办法是用DataView进行转换,即在DataView中对DataTable过滤数据.DataView构造函数如下: DataView ( DataTabl

项目中遇到的 linq datatable select

1如何使用DataTable.Select选出来的Rows生成新的DataTable?DataTable dt = 数据源;DataTable dtt = new DataTable();dtt=dt.Clone();//拷贝框架DataRow[] dr = dt.select("条件");for(int i=0;i<dr.length;i++){dtt.ImportRow((DataRow)dr[i]);}this.DataGrid.DataSource=dtt;this.Da

DataTable.Select

转载请注明出处:http://www.cnblogs.com/havedream/p/4453297.html 方法:DataTable.Select 作用:获取 DataRow 对象的数组. 重载: Select()------------------------------------------------获取所有 DataRow 对象的数组. Select(String)-------------------------------------------获取按与筛选条件相匹配的所有 D

操作DataTable中的数据

在项目中,经常会遇到这样的问题.用SQL从数据库中选出需要的数据存入DataTable之后,需要进行一定的处理之后,才可以用来显示在页面上. 之前对这些问题,都是遇到一个就百度一个,没有系统的处理这些问题,今天就写个文档来处理一下这个问题 先来几个简单的喽. 添加列和行: (既然是整理, 那就写全一点吧,三个方法) #region 方法一: DataTable tblDatas =new DataTable("Datas"); //表名 DataColumn dc =null; dc

C# DataTable中执行DataTable.Select(&quot;条件&quot;) &lt;转&gt;

1.在DataTable中执行DataTable.Select("条件")返回DataTable: // <summary> // 执行DataTable中的查询返回新的DataTable // </summary> // dt 是源数据DataTable // condition 是查询条件 DataTable newdt = new DataTable(); newdt = dt.Clone(); // 克隆dt 的结构,包括所有 dt 架构和约束,并无数据

在DataTable中执行DataTable.Select(&quot;条件&quot;)返回DataTable;

1.在DataTable中执行DataTable.Select("条件")返回DataTable: // <summary> // 执行DataTable中的查询返回新的DataTable // </summary> // dt 是源数据DataTable // condition 是查询条件 DataTable newdt = new DataTable(); newdt = dt.Clone(); // 克隆dt 的结构,包括所有 dt 架构和约束,并无数据

如何从一个DataTable中复制数据行到另一个DataTable中

DataTable dt = ""; //这里是填充DataTable数据 DataTable dtNew = dt.Copy(); //复制dt表数据结构 dtNew.Clear() //清楚数据 for (int i = 0; i < dt.Rows.Count; i++) { if (条件语句) { dtNew.Rows.Add(dt.Rows[i].ItemArray); //添加数据行 } } ===前提:我们已经有一个DataTable的数据表 现在需要的只是其中的一