zoukankan      html  css  js  c++  java
  • 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             }     

    筛选后的结果:

  • 相关阅读:
    C++ UNREFERENCED_PARAMETER函数的作用
    Win32 Console Application、Win32 Application、MFC三者之间的联系和区别
    解决CSDN博客插入代码出现的问题
    C++ std::vector指定位置插入
    计算机如何与人沟通(1)
    C++ fstream文件操作
    using namespace std 和 include 的区别
    找不到windows.h源文件
    C++ 字符串转换
    WPF style 换肤
  • 原文地址:https://www.cnblogs.com/guozhaoxin/p/11977912.html
Copyright © 2011-2022 走看看