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

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

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

时间: 2025-01-09 04:14:42

在DataTable中执行DataTable.Select("条件")返回DataTable;的相关文章

C# DataTable中执行DataTable.Select(&quot;条件&quot;) &lt;转&gt;

1.在DataTable中执行DataTable.Select("条件")返回DataTable: // <summary> // 执行DataTable中的查询返回新的DataTable // </summary> // dt 是源数据DataTable // condition 是查询条件 DataTable newdt = new DataTable(); newdt = dt.Clone(); // 克隆dt 的结构,包括所有 dt 架构和约束,并无数据

在DataTable中执行DataTable.Select(&quot;条件&quot;),

1.在DataTable中执行DataTable.Select("条件")返回DataTable: // <summary> // 执行DataTable中的查询返回新的DataTable // </summary> // dt 是源数据DataTable // condition 是查询条件 DataTable newdt = new DataTable(); newdt = dt.Clone(); // 克隆dt 的结构,包括所有 dt 架构和约束,并无数据

DataTable中执行DataTable.Select(&quot;条件&quot;),

我们在使用Sql ******这些数据库时,可以轻松的通过Sum.Aver.Count等统计出相关结果,那么,在已经把数据检索出来的DataSet(DataTable)中呢?特别是通过Web Service获得了DataSet,这个时候,可是没有办法回头去修改Select语句来获取这些统计了.那么在DataSet/DataTable中是否可以进行统计呢?答案是肯定的.   在MSDN中,有一篇MS推荐的统计方法,就是逐行对数据进行求和统计,这个方法,其实有等于无(或许这个方法只是针对于DataG

SQL Server中执行Sql字符串,返回执行结果

今天遇到一个问题:想把sql字符串在SQL Server 中执行了,并获取执行的结果 DECLARE @tablename NVARCHAR(300); SET @tablename='select @table3 = count(1) from UserVisitLog'; DECLARE @newtablename NVARCHAR(300); exec sp_executesql @tablename, N'@table3 NVARCHAR(300) OUT',@newtablename

如何从一个DataTable中复制数据行到另一个DataTable中

DataTable dt = ""; //这里是填充DataTable数据 DataTable dtNew = dt.Copy(); //复制dt表数据结构 dtNew.Clear() //清楚数据 for (int i = 0; i < dt.Rows.Count; i++) { if (条件语句) { dtNew.Rows.Add(dt.Rows[i].ItemArray); //添加数据行 } } ===前提:我们已经有一个DataTable的数据表 现在需要的只是其中的一

Entity Framework执行Sql语句返回DataTable

Entity Framework中对外开放了数据库连接字符串,使用的时候可以直接得到这个连接字符串,然后进行相关的操作.如果在使用的过程中,发现Entity Framework中有一些满足不了的需求的话,那么就可以用这个连接字符串,自己写ADO的代码,去数据库进行相关的操作.特别是对于一些复杂的查询,这时候,一般是想直接执行一个Sql语句,返回一个结果集.下面是一个方法,直接返回DataTable. /// <summary> /// EF SQL 语句返回 dataTable /// <

DataTable中如何去除重复的项【转】

上周在项目中遇到一个问题,就是获取DataTable中某一列的值,因为从数据库中检索数据时,按照2个字段进行分组,而要获得的那一列刚好在分组这两列中,所以该列的值必然有重复,于是就想到了去除重复,有了思路以后在网上看了一些方法,大都是遍历之类的,虽说功能是可以实现,但是效率太低了,最后发现了一个简单的方法,如下: public string[] GetNamesFromDataTable(DataTable dataTable)        {            DataView dv =

shell 脚本中执行mysql语句

通过hash建表之后,表的数据量巨大2048,那怎么去验证表是否建成功呢? 逻辑生成表名这部分就不写了.只要能建表成功,这部分的脚本肯定是有的.那么怎么在shell中执行selec查询并返回呢 只要在脚本中添加 mysql -h [ip] -P [port] -u[username] -p[password] -e 'select count(1) from dbname.tablename;' 返回结果中自然会输出返回结果

c# DataTable select 过滤返回新DataTable

Select(); Select("id>='3' and name='3--hello'");//支持and Select("id>='3' or id='1'");//支持or Select("name like '%hello%'");//支持like Select("id>5","id desc"); Select("id>5", "id des