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            /*总之,可以用括号分组,创建复杂的布尔表达式*/

### 回答1: datatable.select()是一个方法,用于在数据表选择符合特定条件的行。它可以接受一个字符串参数,该参数是一个筛选条件,用于指定要选择哪些行。例如,可以使用以下代码选择名字为“张三”的行: datatable.select("姓名='张三'"); 此外,还可以使用其他运算符和逻辑运算符来构建更复杂的筛选条件。选择的结果将作为一个新的数据表返回。 ### 回答2: datatable.select()是DataTable类的一个方法,用于对DataTable对象进行数据查询和筛选。它接受一个字符串参数,这个字符串参数就是select查询语句。通过这个方法可以获取查询的结果集,然后对结果集进行查询和筛选。下面我们来进一步探讨一下datatable.select()的用法变量。 1. 查询所有数据:如果查询所有数据,只需要将字符串参数设置为""或者null,例如datatable.select("")或datatable.select(null),这样就可以查询出DataTable对象的所有数据。 2. 查询指定列数据:如果只需要查询DataTable对象的指定列数据,可以通过在字符串参数设置需要查询的列名,例如datatable.select("column1, column2, column3"),这样就可以查询出指定列的数据。 3. 筛选数据:如果需要按照一定的条件筛选数据,可以在字符串参数设置查询条件,例如datatable.select("column1='value1' and column2<'value2'"),这个查询条件就是按照列column1的值等于"value1"且列column2的值小于"value2"进行筛选。 4. 排序数据:如果需要按照一定的顺序排序数据,可以在字符串参数设置排序的条件,例如datatable.select("", "column1 asc, column2 desc"),这个字符串参数第一个参数是查询条件,第二个参数是排序条件,这样就可以按照列column1升序排列,列column2降序排列。 总之,datatable.select()方法用法非常的灵活,可以通过设置不同的参数来实现对数据的不同操作。需要注意的是,在进行查询和筛选操作时,应该注意字符串参数的查询语句是否正确,否则可能导致查询结果不正确。 ### 回答3: datatable.select()是一个用于筛选数据的方法。该方法可以从datatable选取满足特定条件的数据并返回数据行数组。使用该方法,可以根据特定的查询条件来过滤出需要的数据,从而实现数据分析和数据处理的目的。 datatable.select()方法接受一个字符串参数,表示查询条件。查询条件可以使用表达式、运算符和函数组合而成,用于筛选满足条件的数据行。查询条件可以包含字段名、运算符和常量,例如"CategoryName = 'Beverages' and UnitPrice > 20",用于选取商品类型为饮料且单价大于20的商品数据行。 在编写查询语句时,需要特别注意查询条件的语法和格式。查询语句的每个字段名都需要以方括号([])括起来,例如"[CategoryName]"。如果查询条件包含比较运算符"="或"<>",需要在字段名和值之间加上单引号('),例如"[CategoryName] = 'Beverages'"。查询条件也可以使用LIKE、IN、NOT等运算符。 使用datatable.select()方法可以灵活地实现多种数据分析和数据处理需求。该方法可以用于筛选、排序、分组、聚合等操作,可以将多个查询条件组合起来实现复杂查询。同时,为提高查询效率,可以通过设置datatable的索引或缓存来加速数据查询操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值