DataTable.Select用法-返回新的DataTable

  string condition = @"MaterialNum='" + dataTable.Rows[i]["MaterialNum"].ToString() + "'"
                          + @" and SupplierName='" + dataTable.Rows[i]["SupplierName"].ToString() + "'";
                    DataTable newdt = GetNewDataTable(dataTable2, condition);


 /// <summary>
        /// 执行DataTable中的查询返回新的DataTable
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="condition"></param>
        /// <returns></returns>
        private DataTable GetNewDataTable(DataTable dt, string condition)
        {
            DataTable newdt = new DataTable();
            newdt = dt.Clone();
            DataRow[] dr = dt.Select(condition);

            if (dr == null || dr.Length == 0) return null;
            for (int i = 0; i < dr.Length; i++)
            {
                newdt.ImportRow((DataRow)dr[i]);
            }
            return newdt;//返回的查询结果
        }



举例说明:

有一个用户表,名称为 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");

 

posted @ 2022-06-28 13:24  飞鱼上树了  阅读(372)  评论(0编辑  收藏  举报
/* 看板娘 */