datatable linq查询
来源:互联网 发布:贴吧人肉软件 编辑:程序博客网 时间:2024/04/30 11:38
DataTable通过调用AsEnumerable()方法,从而运用Linq查询。其中AsEnumerable方法在System.Data.DataSetExtensions.dll中定义,一般VS会自动引用这个dll。
一、datatable linq查询实例
1. DataTable读取列表
C# 代码 复制
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"));}
C# 代码 复制
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 查询
C# 代码 复制
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 数据排序
C# 代码 复制
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") });
C# 代码 复制
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"));}
C# 代码 复制
var expr = from p in ds.Tables["Product"].AsEnumerable() orderby p.Field<int>("SortOrder"), p.Field<string>("ProductName") descending select p;
4、DataTable分组
C# 代码 复制
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的数目
C# 代码 复制
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查询
C# 代码 复制
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()方法
C# 代码 复制
DataTable newD1t = query1.CopyToDataTable<DataRow>(); foreach (DataRow item in newD1t.Rows) { System.Console.WriteLine(item["Name"]); }
阅读全文
0 0
- Datatable中linq查询
- datatable筛选、查询-------linq
- datatable linq查询
- LINQ查询返回DataTable类型
- C#Linq查询DataTable注意事项
- Linq DataTable 查询与修改
- LINQ查询返回DataTable类型
- Linq DataTable的修改和查询
- Linq查询datatable的记录集合
- Linq DataTable的修改和查询
- Linq DataTable的修改和查询
- 用linq对datatable进行分组查询并返回datatable
- 用linq对datatable分组查询并返回datatable
- Linq Datatable
- datatable linq
- 用DataTable创建DataView 用LINQ查询创建DataView
- Linq初探——DataTable的查询与修改
- C#利用Linq对DataTable过滤查询代码
- JSON
- iOS之《Effective Objective-C 2.0》读书笔记(51)
- 自适应网页设计(Responsive Web Design)
- docker入门之镜像
- 移植Openssh到ARM Linux目标板
- datatable linq查询
- java_获取“当前时间”的方法
- intellij 控制台输出乱码
- Python 中的argsort()函数的用法
- Telephoney框架总结
- 170921_Spring英文文档阅读(十三)_2.3 Usage scenarios(五)
- Linux给用户添加sudo权限
- Revolving Digits
- JavaScript组件设计思想