C#DataTable.Select()根据条件筛选数据问题

 

DataTable.Select()根据条件筛选数据

很多时候我们获取到一个表的时候需要根据表的包含的队列去筛选内容,一般来说可能想到的就是遍历整个表的内容进行条件筛选,但是这种方式增加了代码量且易出错,DataTable.Select()就可以解决这一问题。

DataTable.Select()重载

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

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

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

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

举例

Select("Results = 'PASS' ");//筛选字段‘Results '为‘PASS'的所有数据
Select("Time>= 100 ");//筛选字段‘Time'大于等于100的所有数据
Select("Results = 'PASS' and Time>= 100 ");//筛选字段‘Results '为‘PASS'且字段‘Time'大于等于100的所有数据
Select("Results = 'PASS' or Time>= 100 ");//筛选字段‘Results '为‘PASS'或者字段‘Time'大于等于100的所有数据
Select("Results  like '%NG_%' ");//筛选字段‘Results '字段中包含'NG_'字符串的所有数据

 

DataTable常用数据筛选方法

Computer

按条件筛选数据并对数据进行统计运算

dtData.Compute("Avg(身高)", "年龄 > 22 AND 姓名 LIKE '李%'");

Select

根据条件查询一行或多行数据

DataRow[] drs = dtData.Select("姓名 is NULL");

Find

根据DataTable的主键查找1行数据,只能查找主键字段

如果主键是多个字段,需要借助Object[]数组进行拼接

主键只有一个字段

DataRow dr = this.dt.Rows.Find("14109");

主键有多个字段

Object[] obj= new Object[]{268,"2001-7-1"};
DataRow dr = dt.Rows.Find(obj);

 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程宝库

1.1 解决方案名和项目名上右键——重命名如下图:改完后效果如下:1.2 接下来要改名 代码中的名称空间名,随便打开一个程序文件,找到命名空间名,改掉,会出现报错(那个小红框)点击那个小红 ...