DataTable中的select()用法

1.在DataTable中执行DataTable.Select("条件")返回DataTable

// <summary>  // 执行DataTable中的查询返回新的DataTable  // </summary>  // dt 是源数据DataTable  // condition 是查询条件   DataTable newdt = new DataTable();  newdt = dt.Clone(); // 克隆dt 的结构,包括所有 dt 架构和约束,并无数据;  DataRow[] rows = dt.Select(conditions); // 从dt 中查询符合条件的记录;  foreach (DataRow row in rows)  // 将查询的结果添加到dt中;  {         newdt.Rows.Add(row.ItemArray);  }
有网友说也可以这样:(大家可以试试)   DataTable newdt = new DataTable();  newdt=dt.Clone();  DataRow[] dr = dt.Select(condition);  for(int i=0;i<dr.Length;i++)  {  newdt.ImportRow((DataRow)dr[i]);  }

2.关于DataTable.Select(); 


Select方法:   

  Select();//全部查出来   

  Select(过滤条件);//根据过滤条件进行过滤,如Select("columnname1   like   '%xx%'");   

  Select(过滤条件,排序字段);//过滤,并排序,如Select("columnname1   like   '%xx%'",columnname2); 


完成一个查询,返回一个DataTable后,很多时候都想在查询结果中继续搜索。这时可以使用DataTable.Select方法对结果进行再查询。 

Select方法有4个重载,我们经常用到的就是DataTable.Select(String) ; 


下面就说说带一个参数的DataTable.Select(String): 

这个String的参数是查询的限定式。相当于SQL查询语言中的WHERE语句(不含WHERE),其语法符合SQL语言语法。 (网友的说法)我觉得就是类似sql的语法而已。 


不过我试了试,不支持BETWEEN AND,举个成功的例子: 


//FromTime 和ToTime 是两个DateTime类型的变量;occurTime是dTable里面的列名; 


DataRow[] datarows = dTable.Select("occurTime >= '" + FromTime + "' and occurTime <= '" + ToTime+"'"); 


DataTable.Select()方法里面支持简单的过滤和排序,不支持复杂的条件过滤和排序。里面的字符串必须是列名和数据,以及>,<,=,<>等关系运算符。举几个例子: 


DataRow[]   row   =   Detailtb.Select("WZMC='"+MaterialName+"' and   CZ='"+MaterialTexture+"   and   GG='"+MaterialSpecs+"'");    


DataTable.Select("City Like 'B%'"); 


DataTable.Select("name='" + a +"'"); 


一定要注意单引号的问题;我之前就是把变量用双引号括起来了,一直出错,后来在网上查,发现要先有双引号,再用单引号;即‘“变量”’; 


 /*在DataTable中选择记录*/

c# DataTable中的select()方法的用法_数据            /* 向DataTable中插入记录如上,更新和删除如下:

c# DataTable中的select()方法的用法_数据_02             * ----但是在更新和删除前,首先要找出要更新和删除的记录。

c# DataTable中的select()方法的用法_taro_03             * 一种方法是遍历DataRow,搜索想要的记录,

c# DataTable中的select()方法的用法_字段_04             * --〉然而更聪明的办法是使用DataTable.Select方法:table.Select();

c# DataTable中的select()方法的用法_双引号_05             * table.Select();//返回DataRow[],可以包含一行或多行,

c# DataTable中的select()方法的用法_双引号_06             * 取决于Select()的参数(filter)

c# DataTable中的select()方法的用法_taro_07             * gets an array of all Data.DataRow objects that match the

c# DataTable中的select()方法的用法_数据_08             * filter in the order of the sort 

c# DataTable中的select()方法的用法_数据_09             * that match the specified state

c# DataTable中的select()方法的用法_双引号_10             */

c# DataTable中的select()方法的用法_单引号_11            DataRow[] arrRows = table.Select("title_id='JP1001'");

c# DataTable中的select()方法的用法_字段_12            /*

c# DataTable中的select()方法的用法_taro_13             * 下面这条语句选择(返回)"Price"字段值小于10的DataRow

c# DataTable中的select()方法的用法_taro_14             */

c# DataTable中的select()方法的用法_单引号_15            DataRow[] arrRows = table.Select("price<10.00");

c# DataTable中的select()方法的用法_单引号_16            /*

c# DataTable中的select()方法的用法_数据_17             * 下面这条语句选择Pubdate字段日期在2000年1月1日当天或之后的DataRow 

c# DataTable中的select()方法的用法_taro_18             */

c# DataTable中的select()方法的用法_单引号_19            DataRow[] arrRows = table.Select("pubdate>='#1/1/2000#'");

c# DataTable中的select()方法的用法_字段_20            /*如果想知道Select返回了多少行,读取数组的Length属性*/

c# DataTable中的select()方法的用法_字段_21            /*传递给DataTable.Select()的筛选器表达式: 

c# DataTable中的select()方法的用法_taro_22             * 下面比较操作符可以被支持:<,<=,=,>=,>和<>也可以使用IN和Like

c# DataTable中的select()方法的用法_taro_23             */

c# DataTable中的select()方法的用法_taro_24            //返回"state"等于CA、TN或WA的所有行

c# DataTable中的select()方法的用法_字段_25            DataRow[] arrRows = table.Select("state in('ca','tn','wa')");

c# DataTable中的select()方法的用法_单引号_26            //返回"state"以CA开头的所有行

c# DataTable中的select()方法的用法_双引号_27            DataRow[] arrRows = table.Select("state like 'ca*'");

c# DataTable中的select()方法的用法_字段_28            //还可以使用一些Sql函数,在DataTable中选择State字段为空的记录

c# DataTable中的select()方法的用法_单引号_29            DataRow[] arrRows = table.Select("isnull(state,0)=0");

c# DataTable中的select()方法的用法_单引号_30            //还可以使用And、Or和Not

c# DataTable中的select()方法的用法_taro_31            DataRow[] arrRows = table.Select("state='tn' and zip like '37*'");

c# DataTable中的select()方法的用法_字段_32            /*总之,可以用括号分组,创建复杂的布尔表达式*/