datatable linq查询
类别:编程学习 浏览量:2637
时间:2015-10-29 datatable linq查询
datatable linq查询DataTable通过调用AsEnumerable()方法,从而运用Linq查询。其中AsEnumerable方法在System.Data.DataSetExtensions.dll中定义,一般VS会自动引用这个dll。
一、datatable linq查询实例
1. DataTable读取列表
DataSet ds = new DataSet();
// 省略ds的Fill代码
DataTable products = ds.Tables["Product"];
IEnumerable<DataRow> rows = from p in products.AsEnumerable()
select p;
foreach (DataRow row in rows)
{
Console.WriteLine(row.Field<string>("ProductName"));
}
DataSet ds = new DataSet();
// 省略ds的Fill代码
DataTable products = ds.Tables["Product"];
var rows = products.AsEnumerable()
.Select(p => new
{
ProductID = p.Field<int>("ProductID"),
ProductName = p.Field<string>("ProductName"),
UnitPrice = p.Field<decimal>("UnitPrice")
});
foreach (var row in rows)
{
Console.WriteLine(row.ProductName);
}
2. DataTable linq where 查询
var rows = products.AsEnumerable()
.Where(p => p.Field<decimal>("UnitPrice") > 10m)
.Select(p => new
{
ProductID = p.Field<int>("ProductID"),
ProductName = p.Field<string>("ProductName"),
UnitPrice = p.Field<decimal>("UnitPrice")
});
3、DataTable linq 数据排序
var rows = products.AsEnumerable()
.Where(p => p.Field<decimal>("UnitPrice") > 10m)
.OrderBy(p => p.Field<int>("SortOrder"))
.Select(p => new
{
ProductID = p.Field<int>("ProductID"),
ProductName = p.Field<string>("ProductName"),
UnitPrice = p.Field<decimal>("UnitPrice")
});
var expr = from p in products.AsEnumerable()
orderby p.Field<int>("SortOrder")
select p;
IEnumerable<DataRow> rows = expr.ToArray();
foreach (var row in rows)
{
Console.WriteLine(row.Field<string>("ProductName"));
}
var expr = from p in ds.Tables["Product"].AsEnumerable()
orderby p.Field<int>("SortOrder"), p.Field<string>("ProductName") descending
select p;
4、DataTable分组
var query = from p in ds.Tables["Product"].AsEnumerable()
group p by p.Field<int>("CategoryID") into g
select new
{
CategoryID = g.Key,
Products = g
};
foreach (var item in query)
{
Console.WriteLine(item.CategoryID);
foreach (var p in item.Products)
{
Console.WriteLine(p.Field<string>("ProductName"));
}
}
查询Product中每个CategoryID的数目
var expr = from p in ds.Tables["Product"].AsEnumerable()
group p by p.Field<int>("CategoryID") into g
select new
{
CategoryID = g.Key,
ProductsCount = g.Count()
};
5、多个DataTable查询
var query = from p in ds.Tables["Product"].AsEnumerable()
from c in ds.Tables["Category"].AsEnumerable()
where p.Field<int>("CategoryID") == c.Field<int>("CategoryID")
&& p.Field<decimal>("UnitPrice") > 10m
select new
{
ProductID = p.Field<int>("ProductID"),
ProductName = p.Field<string>("ProductName"),
CategoryName = c.Field<string>("CategoryName")
};
二、linq 对象转换为DataTable
通过CopyToDataTable()方法
DataTable newD1t = query1.CopyToDataTable<DataRow>();
foreach (DataRow item in newD1t.Rows)
{
System.Console.WriteLine(item["Name"]);
}
标签:linq
您可能感兴趣
- Linq中的TakeWhile和SkipWhile
- linq中let
- linq not in 查询
- linq distinct去重
- Linq中select查询
- linq 数据类型转换
- linq中AsEnumerable和AsQueryable的区别
- Linq操作Datable
- LINQ中Aggregate的用法
- list使用linq排序
- linq中延迟执行
- Linq中where查询
- LINQ TO SQL 中join
- linq to sql 中Concat、Union、Intersect、Except
- 如何查看linq生成的sql
- linq xml 查询
- 四月新番CP人气榜公布,《剃须》两度上榜,沙优不是女朋友(四月新番CP人气榜公布)
- 2019年外媒秋季新番动画角色CP排行榜,桐人和爱丽丝落榜(2019年外媒秋季新番动画角色CP排行榜)
- 新一小兰领衔 盘点动漫中的那些 远距离恋爱情侣(盘点动漫中的那些)
- 大事件 合肥四中火了(大事件合肥四中火了)
- 翼龙贷组织出借人调研 感受鄱阳 借 来的致富路(翼龙贷组织出借人调研)
- 2023新国风戏曲教育寒假集训班汇报演出《戏娃闹元宵》图文报道(2023新国风戏曲教育寒假集训班汇报演出戏娃闹元宵图文报道)
热门推荐
- TFS源代码管理
- css3实现3d效果教程(CSS3实现简易版的刮刮乐效果)
- apache中配置虚拟主机的作用(apache基于端口创建虚拟主机的示例)
- c语言可以实现python所有功能吗(Python实现的调用C语言函数功能简单实例)
- mysql表结构设计分享(MySql开发之自动同步表结构)
- linux系统显示时间的命令(详解Linux time 命令的使用)
- python带权限复制文件夹(python定时复制远程文件夹中所有文件)
- 常见伪静态规则(通过伪静态解决中文乱码问题)
- python绘折线图数据(python2.7使用plotly绘制本地散点图和折线图)
- python爬虫书籍经典(Python利用lxml模块爬取豆瓣读书排行榜的方法与分析)