java datatable select_DataTable中的select()用法

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

执行DataTable中的查询返回新的DataTabledt 是源数据DataTable//condition 是查询条件

DataTable newdt= newDataTable();

newdt= dt.Clone(); //克隆dt 的结构,包括所有 dt 架构和约束,并无数据;

DataRow[] rows = dt.Select(conditions); //从dt 中查询符合条件的记录;

foreach (DataRow row in rows) //将查询的结果添加到dt中;

{

newdt.Rows.Add(row.ItemArray);

}

有网友说也可以这样:(大家可以试试)

DataTable newdt= newDataTable();

newdt=dt.Clone();

DataRow[] dr=dt.Select(condition);for(int i=0;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中选择记录*/

24a924a57ba6b3f2b51fc9edb7ea4186.png            /* 向DataTable中插入记录如上,更新和删除如下:

1408c5260b2f05e450dee929db9be5f7.png             * ----但是在更新和删除前,首先要找出要更新和删除的记录。

1408c5260b2f05e450dee929db9be5f7.png             * 一种方法是遍历DataRow,搜索想要的记录,

1408c5260b2f05e450dee929db9be5f7.png             * --〉然而更聪明的办法是使用DataTable.Select方法:table.Select();

1408c5260b2f05e450dee929db9be5f7.png             * table.Select();//返回DataRow[],可以包含一行或多行,

1408c5260b2f05e450dee929db9be5f7.png             * 取决于Select()的参数(filter)

1408c5260b2f05e450dee929db9be5f7.png             * gets an array of all Data.DataRow objects that match the

1408c5260b2f05e450dee929db9be5f7.png             * filter in the order of the sort 

1408c5260b2f05e450dee929db9be5f7.png             * that match the specified state

f466905a3bcb5dcef110eab799825254.png             */

731655954c7be9d8835ece551b5385f8.png            DataRow[] arrRows = table.Select("title_id='JP1001'");

24a924a57ba6b3f2b51fc9edb7ea4186.png            /*

1408c5260b2f05e450dee929db9be5f7.png             * 下面这条语句选择(返回)"Price"字段值小于10的DataRow

f466905a3bcb5dcef110eab799825254.png             */

731655954c7be9d8835ece551b5385f8.png            DataRow[] arrRows = table.Select("price<10.00");

24a924a57ba6b3f2b51fc9edb7ea4186.png            /*

1408c5260b2f05e450dee929db9be5f7.png             * 下面这条语句选择Pubdate字段日期在2000年1月1日当天或之后的DataRow 

f466905a3bcb5dcef110eab799825254.png             */

731655954c7be9d8835ece551b5385f8.png            DataRow[] arrRows = table.Select("pubdate>='#1/1/2000#'");

24a924a57ba6b3f2b51fc9edb7ea4186.png            /*如果想知道Select返回了多少行,读取数组的Length属性*/

24a924a57ba6b3f2b51fc9edb7ea4186.png            /*传递给DataTable.Select()的筛选器表达式: 

1408c5260b2f05e450dee929db9be5f7.png             * 下面比较操作符可以被支持:=,>和<>也可以使用IN和Like

f466905a3bcb5dcef110eab799825254.png             */

731655954c7be9d8835ece551b5385f8.png            //返回"state"等于CA、TN或WA的所有行

731655954c7be9d8835ece551b5385f8.png            DataRow[] arrRows = table.Select("state in('ca','tn','wa')");

731655954c7be9d8835ece551b5385f8.png            //返回"state"以CA开头的所有行

731655954c7be9d8835ece551b5385f8.png            DataRow[] arrRows = table.Select("state like 'ca*'");

731655954c7be9d8835ece551b5385f8.png            //还可以使用一些Sql函数,在DataTable中选择State字段为空的记录

731655954c7be9d8835ece551b5385f8.png            DataRow[] arrRows = table.Select("isnull(state,0)=0");

731655954c7be9d8835ece551b5385f8.png            //还可以使用And、Or和Not

731655954c7be9d8835ece551b5385f8.png            DataRow[] arrRows = table.Select("state='tn' and zip like '37*'");

24a924a57ba6b3f2b51fc9edb7ea4186.png            /*总之,可以用括号分组,创建复杂的布尔表达式*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值