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