博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LINQ系列:LINQ to DataSet的DataTable操作
阅读量:6251 次
发布时间:2019-06-22

本文共 3542 字,大约阅读时间需要 11 分钟。

LINQ to DataSet需要使用System.Core.dll、System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System.Data和System.Data.DataSetExtensions。

1. DataTable读取列表

DataSet ds = new DataSet();// 省略ds的Fill代码DataTable products = ds.Tables["Product"];IEnumerable
rows = from p in products.AsEnumerable() select p;foreach (DataRow row in rows){ Console.WriteLine(row.Field
("ProductName"));}
DataSet ds = new DataSet();// 省略ds的Fill代码DataTable products = ds.Tables["Product"];var rows = products.AsEnumerable()    .Select(p => new    {        ProductID = p.Field
("ProductID"), ProductName = p.Field
("ProductName"), UnitPrice = p.Field
("UnitPrice") });foreach (var row in rows){ Console.WriteLine(row.ProductName);}
var products = ds.Tables["Product"].AsEnumerable();var query = from p in products            select p.Field
("ProductName");

2. DataTable查询

var rows = products.AsEnumerable()    .Where(p => p.Field
("UnitPrice") > 10m) .Select(p => new { ProductID = p.Field
("ProductID"), ProductName = p.Field
("ProductName"), UnitPrice = p.Field
("UnitPrice") });

3. DataTable数据排序

var rows = products.AsEnumerable()    .Where(p => p.Field
("UnitPrice") > 10m) .OrderBy(p => p.Field
("SortOrder")) .Select(p => new { ProductID = p.Field
("ProductID"), ProductName = p.Field
("ProductName"), UnitPrice = p.Field
("UnitPrice") });
var expr = from p in products.AsEnumerable()            orderby p.Field
("SortOrder") select p;IEnumerable
rows = expr.ToArray();foreach (var row in rows){ Console.WriteLine(row.Field
("ProductName"));}
var expr = from p in ds.Tables["Product"].AsEnumerable()           orderby p.Field
("SortOrder"), p.Field
("ProductName") descending select p;

4. 多个DataTable查询

var query = from p in ds.Tables["Product"].AsEnumerable()            from c in ds.Tables["Category"].AsEnumerable()            where p.Field
("CategoryID") == c.Field
("CategoryID") && p.Field
("UnitPrice") > 10m select new { ProductID = p.Field
("ProductID"), ProductName = p.Field
("ProductName"), CategoryName = c.Field
("CategoryName") };

5. DataTable分组

var query = from p in ds.Tables["Product"].AsEnumerable()            group p by p.Field
("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
("ProductName")); }}

  查询Product中每个CategoryID的数目:

var expr = from p in ds.Tables["Product"].AsEnumerable()           group p by p.Field
("CategoryID") into g select new { CategoryID = g.Key, ProductsCount = g.Count() };

转载于:https://www.cnblogs.com/ChineseMoonGod/p/6899104.html

你可能感兴趣的文章
谈谈KMP算法
查看>>
知道这20个正则表达式,能让你少写1,000行代码
查看>>
我的友情链接
查看>>
javaScript基础(四)流程控制
查看>>
为安装有系统及应用程序的服务器更换硬盘方法一例
查看>>
MySQL笔记:select默认使用不当索引导致的巨大性能损失
查看>>
我的友情链接
查看>>
服务器发生间歇性问题时的定位思路
查看>>
我的友情链接
查看>>
1. 如何看当前Linux系统有几颗物理CPU和每颗CPU的核数?
查看>>
我的友情链接
查看>>
Android优秀开源项目
查看>>
CentOS部署OpenLDAP认证之 phpldapadmin
查看>>
Go36-34,35-并发安全字典(sync.Map)
查看>>
如何让审计为我所用?
查看>>
互联网江湖,“鲶鱼”如何变“鲨鱼”?
查看>>
PEX维护光盘如何维护网络的
查看>>
装箱与拆箱
查看>>
阿里如何将“高峰前扩容、高峰后缩容”的梦想照进现实?
查看>>
这可如何是好
查看>>