项目中遇到的 linq datatable select

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目中遇到的 linq datatable select相关的知识,希望对你有一定的参考价值。

1如何使用DataTable.Select选出来的Rows生成新的DataTable?
DataTable dt = 数据源;
DataTable dtt = new DataTable();
dtt=dt.Clone();//拷贝框架
DataRow[] dr = dt.select("条件");
for(int i=0;i<dr.length;i++)
{
dtt.ImportRow((DataRow)dr[i]);
}
this.DataGrid.DataSource=dtt;
this.DataGrid.DataBind();

在DataTable中执行DataTable.Select("条件")扩展

下面就说说带一个参数的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 +"‘");
一定要注意单引号的问题;我之前就是把变量用双引号括起来了,一直出错,后来在网上查,发现要先有双引号,再用单引号;即‘“变量”’;

2.
var item = from n in lists
select new Customer
{
ID = n.A,
Name = n.B,
Country = n.C,
Price = n.D
};

3.
// var rows = dt.AsEnumerable()
//.Select(p => new
//{
// Stock = p.Field<int>("Stock"),
// ProductCode = p.Field<string>("ProductCode"),
// CreatedTime = p.Field<DateTime>("CreatedTime")
//}).ToList();

4.var query=from t in dt.AsEnumerable()
where Convert.ToDateTime(t.Field<string>("日期")) == new DateTime(2011,1,5)
select t;

以上是关于项目中遇到的 linq datatable select的主要内容,如果未能解决你的问题,请参考以下文章

关于Linq对DataTable和List各自的两个集合筛选的相关操作技巧

使用LinQ To Object把数组或DataTable中的数据进行向上汇总

C# DataTable转Linq

使用 linq 填充 DataTable 对象 [关闭]

如何计算 LINQ 中 DataTable 的列的总和(到数据集)?

从两个通过 LINQ 连接的 DataTable 创建组合的 DataTable。 C#