DataTable.Select筛选过滤数据返回DataRow[]转为DataTable添加到DataSet

时间:2019-12-03
本文章向大家介绍DataTable.Select筛选过滤数据返回DataRow[]转为DataTable添加到DataSet,主要包括DataTable.Select筛选过滤数据返回DataRow[]转为DataTable添加到DataSet使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

问题还原,如图所示,我们要筛选所有SHDP 为北京翠微KR的数据。

1、 筛选DataTable微软为我们提供了一个方法DataTable.Select(),其用法如下:

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");

代码如下:

1  //查询结果数据集
2             DataSet ds = bll.GetDPCCSBList(pageNum, pageSize, whereStr, out totalRecord);
3             //通过Select查询返回DataRow[]
4             DataRow[] rows = ds.Tables[0].Select($"SHDPDM='{jobnum}'");
5             //DataRow[]转为DataTable
6             DataTable dtResult = ToDataTable(rows);
7             //将Table添加到DataSet
8             DataSet dsResult = new DataSet();
9             dsResult.Tables.Add(dtResult);
DataRow[]转为dataTable
 1             /// <summary>
 2             /// DataRow[]转为dataTable
 3             /// </summary>
 4             /// <param name="rows"></param>
 5             /// <returns></returns>
 6             public DataTable ToDataTable(DataRow[] rows)
 7             {
 8                 if (rows == null || rows.Length == 0) return null;
 9                 DataTable tmp = rows[0].Table.Clone();  // 复制DataRow的表结构  
10                 foreach (DataRow row in rows)
11                 tmp.Rows.Add(row.ItemArray);  // 将DataRow添加到DataTable中  
12                 return tmp;
13             }     

筛选后的结果:

原文地址:https://www.cnblogs.com/guozhaoxin/p/11977912.html