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

2. DataTable查询

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数据排序

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()
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")
};

5. 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()
};

LINQ系列:LINQ to DataSet的DataTable操作的更多相关文章

  1. C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换

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

  2. .NET DataSet、DataTable操作记录

    一直在习惯.net的编程思维,或是说C#吧.因为前几年一直在用PHP做站,现在用.net很不习惯,主要C#都依赖对控件.类的熟悉,不然很多功能都实现不了. 需求 最近做了一功能,从SQL Server ...

  3. Linq&Lumda---LINQ to DataSet的DataTable操作

    1. DataTable读取列表 DataSet ds = new DataSet();// 省略ds的Fill代码DataTable products = ds.Tables["Produ ...

  4. LINQ to DataSet的DataTable操作

    1. DataTable读取列表 DataSet ds = new DataSet();// 省略ds的Fill代码DataTable products = ds.Tables["Produ ...

  5. LINQ系列目录

    1. LINQ准备 1.1 C#中与LINQ相关特性 2. LINQ to Object 2.1 LINQ to Object投影操作符(Select/SelectMany/Let) 2.2 LINQ ...

  6. C# ~ 从 XML 到 Linq 到 Linq to XML

    .XML 可扩展标记语言 (Extensible Markup Language), 标记 (markup) 是关键部分,是标准通用标记语言 (Standard Generalized Markup ...

  7. LINQ系列:LINQ to ADO.NET概述

    LINQ to ADO.NET 包括两种独立的技术: LINQ to DataSet 和 LINQ to SQL. 使用 LINQ to DataSet 可以对DataSet 执行丰富而优化的查询,而 ...

  8. LinQ系列文章

    温故而知新,想着系统再学习一次LinQ知识点,发现园子里有个非常棒的系列文章,所以Mark下来,方便以后查阅! 系列博客导航: LINQ之路系列博客导航 LINQ之路 1:LINQ介绍 LINQ之路 ...

  9. Linq to SQL 简单的增删改操作

    Linq to SQL 简单的增删改操作. 新建数据库表tbGuestBook.结构如下: 新建web项目,完成相应的dbml文件.留言页面布局如下 <body> <form id= ...

随机推荐

  1. python基础04 运算

    数学运算 print 2+2  #加法 print 1.3-4 #剪法 print 3*5 #乘法 print 4.5/1.5 #除法 print 3**2   #乘方 print 10%3   #求 ...

  2. MacOS下Express安装过程中遇到的问题

    问题描述: 使用nmp install express -g命令全局安装express后,在终端使用express -V命令可以获取到express的版本号,但在引用express的项目运行时,会报缺 ...

  3. bzoj3674同上(好短)

    +强在 就过了 既没有启发式又没有路径压缩,连建树都用的是代码最短的写法(什么心态,每天追求代码短) 话说回来 可持久化的数组感觉只能出类似裸题的题目,,,,藏也藏不住啊 #include <c ...

  4. .net之美学习-前奏

    做程序员已经一年多 可是感觉自己的基础不是很好,最近买呢一本.net之美的书,决定开始读着本书,写篇随笔记录一下,后面我会通过读着个书 把里面的知识点记录下,没一个章节付上自己的总结

  5. css 简析folat

    1.float?? 不知道大家是否还记得之前我们讲过页面是文档流,具体什么是文档流,我就不说了?于是我们页面布局如果用div的话,那么块状的元素是怎么排列的,什么叫块状自己去看? 如果我们呢用div布 ...

  6. MFC覆盖OnPrepareDC实现“所见即所得”打印

    附件下载:http://files.cnblogs.com/mengdejun/print.zip void CPrintView::OnPrepareDC(CDC* pDC, CPrintInfo* ...

  7. <十二>JDBC_批量处理

    import java.sql.Connection;import java.sql.PreparedStatement;import org.junit.Test;import com.kk.jdb ...

  8. bzoj3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一(spfa+状压DP)

    数据最多14个有宝藏的地方,所以可以想到用状压dp 可以先预处理出每个i到j的路径中最小权值的最大值dis[i][j] 本来想用Floyd写,无奈太弱调不出来..后来改用spfa 然后进行dp,这基本 ...

  9. final关键字(final是最终的)

    final关键字(final是最终的) 1.final修饰特点 a.修饰类,类不能被继承 b.修饰变量,变量就变成了常量, 修饰基本数据类:final int num = 10; 修饰引用数据类型变量 ...

  10. C# DataSet

    一.基本概念 DataSet是ADO.NET的中心概念.可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合.所谓独立,就是说,即使断开数据链路,或者关闭数据库,Dat ...