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 not in 查询
- 如何查看linq生成的sql
- linq中AsEnumerable和AsQueryable的区别
- Linq中where查询
- linq中let
- linq 数据类型转换
- linq xml 查询
- LINQ中Aggregate的用法
- LINQ TO SQL 中join
- linq中join用法
- list使用linq排序
- datatable linq查询
- linq distinct去重
- linq to sql 中Concat、Union、Intersect、Except
- Linq中的TakeWhile和SkipWhile
- 使用 LINQPad 调试linq以及lambda表达式
- 提醒 2019年起河南驾考要开设科目五 官方回应来了(2019年起河南驾考要开设科目五)
- 省 市书法家协会 送万福进万家 活动走进禹州美丽乡村(省市书法家协会)
- 点赞 禹州苌庄正式撤乡建镇 未来发展不可估量(禹州苌庄正式撤乡建镇)
- 它荣获 中国生态魅力镇 称号 就在咱们禹州,一起来看看(中国生态魅力镇)
- 真牛 禹州将建成中等城市(禹州将建成中等城市)
- 被骂欺师灭祖,与郭德纲公开叫板,何云伟改名何沄伟,开始画画了(与郭德纲公开叫板)
热门推荐
- svn中tree conflicts错误的解决方法
- meta标签中viewport
- js闭包可以解决哪些问题(JavaScript中let避免闭包造成问题)
- css3无缝滚动效果(CSS3 制作的图片滚动效果)
- 云计算与服务器托管区别(使用云服务器托管对于企业的好处有哪些?)
- css line-height(CSS中的line-height行高属性学习教程)
- 阿里云服务器总被攻击怎么办(香港云服务器遭遇恶意攻击怎么处理?)
- mysql参数说明(MySQL中你可能忽略的COLLATION实例详解)
- css文本溢出部分成省略号(CSS文本超出2行就隐藏并且显示省略号)
- IEnumerable、GetEnumerator、IEnumerator之间的关系