标题：LINQ实战
LINQ实战
作者:(法国)(Marguerie.F.)马格里(美国)(Eichert.S.)艾歇特(美国)(Wooley.J.)伍利
  译者:陈黎夫
出版社：人民邮电出版社
·页码：416 页
·出版日期：2009年
·ISBN：9787115208514
·开本：16
·丛书名：图灵程序设计丛书·微软技术系列
·外文书名：LINQ in Action
内容简介
《LINQ实战》第一部分介绍了LINQ技术及C#和VB为此提供的新语言特性，第二、三、四部分详细介绍了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML，第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ功能的方法以及LINQ to DataSet。《LINQ实战》适合于使用C#和VB .NET的软件开发者。
作者简介
Fabrice Marguerie，微软C#MVP，资深NET软件架构师，LINQ社区专家。
Steve Eichert，资深程序员，擅长.NET与Ruby，有十多年编程经验。
Jim Wooley，微软MVP，LINQ社区专家。
媒体推荐
本书作者是LINQ社区中的重要成员，他们在书中展示了这一技术的精髓……快去享受这一盛宴吧。
——Matt Warren，微软主架构师，LINQ之父
LINQ方面的杰作！深入、全面、客观，令人欲罢不能。强烈推荐！
——Patrick Smacchia，微软MVP，《C#和.NET 2.0 实战》作者
编辑推荐
《LINQ实战》：微软MVP呕心沥血之作，LINQ圣经，深入全面，引人入胜，丰富实例，兼顾C#和VB .NET语言。《LINQ实战》内容全面详细，几乎涵盖了所有技术要点。对于LINQ提供的各种特性，从客观的角度解释其优缺点，使读者能够根据具体情况做出选择。此外，还讲解了LINQ的可扩展性，可用于更高级的数据处理。全书组织结构合理。行文流畅，使读者如同置身于一次技术旅行。在深入透彻的讲解中恰到好处地运用实例，对同一主题分别给出C#和VB.NIE实例，并在实例的关键点给出注释，真正达到了化繁为简的境界。
LINQ是微软.NET软件开发平台上的一项突破性创新技术，它在面向对象语言与各种数据源之间架设了一座高效的桥梁，大大降低了软件开发的复杂度。
目录
第一部分 从这里开始
第1章 LINQ简介
1.1 LINQ是什么
1.1.1 概览
1.1.2 LINQ的功能
1.1.3 作为语言扩展的LINQ
1.2 为什么需要LINQ
1.2.1 常见问题
1.2.2 解决理念上的失调
1.2.3 LINQ给出解决方案
1.3 LINQ的设计目标及起源
1.3.1 LINQ项目的设计目标
1.3.2 一点历史
1.4 LINQtoObjects初步：查询内存中的集合
1.4.1 先决条件
1.4.2 HelloLINQtoObjects
1.5 LINQtoXML初步：查询XML文档
1.5.1 为什么需要LINQtoXML
1.5.2 HelloLINQtoXML
1.6 LINQtoSQL初步：查询关系型数据库
1.6.1 LINQtoSQL功能概览
1.6.2 HelloLINQtoSQL
1.6.3 进一步了解LINQtoSQL
1.7 小结
第2章 C#和VB语言的增强特性
2.1 新语言的增强特性一瞥
2.1.1 列出当前正在运行的所有进程
2.1.2 将返回结果封装成类
2.2 隐式类型局部变量
2.2.1 语法
2.2.2 使用隐式类型局部变量改进实例程序
2.3 对象和集合的初始化器
2.3.1 引入对象初始化器的动机
2.3.2 集合初始化器
2.3.3 用对象初始化器改进实例程序
2.4 Lambda表达式
2.4.1 委托回顾
2.4.2 匿名方法
2.4.3 Lambda表达式介绍
2.5 扩展方法
2.5.1 创建扩展方法的示例
2.5.2 更多使用LINQ标准查询操作符的例子
2.5.3 将扩展方法引入到实例程序中
2.5.4 注意事项
2.6 匿名类型
2.6.1 使用匿名类型组合数据
2.6.2 没有名字的类型也是类型
2.6.3 使用匿名类型改进实例程序
2.6.4 匿名类型的限制
2.7 小结
第3章 LINQ构建块
3.1 LINQ对.NET的扩展
3.1.1 语言扩展回顾
3.1.2 构成LINQ基础的核心元素
3.2 序列
3.2.1 IEnumerable接口
3.2.2 迭代器回顾
3.2.3 延迟查询执行
3.3 查询操作符
3.3.1 查询操作符是什么
3.3.2 标准查询操作符
3.4 查询表达式
3.4.1 查询表达式是什么
3.4.2 编写查询表达式
3.4.3 标准查询操作符与查询表达式的关系
3.4.4 限制
3.5 表达式树
3.5.1 Lambda表达式回顾
3.5.2 表达式树是什么
3.5.3 IQueryable，另一种实现延迟查询执行的方法
3.6 LINQ的程序集以及命名空间
3.7 小结
第二部分 查询内存中的对象
第4章 熟悉LINQtoObjects
4.1 实例程序简介
4.1.1 程序目标
4.1.2 程序功能
4.1.3 业务逻辑实体
4.1.4 数据库架构
4.1.5 示例数据
4.2 用LINQ操作内存中的集合
4.2.1 能够查询什么
4.2.2 支持的操作
4.3 在ASP .NET和WindowsForms中使用LINQ
4.3.1 Web应用程序中的数据绑定
4.3.2 WindowsForms应用程序中的数据绑定
4.4 常用的标准查询操作符
4.4.1 约束操作符Where
4.4.2 投影操作符
4.4.3 Distinct操作符
4.4.4 转换操作符
4.4.5 聚合操作符
4.5 用不同的方式显示内存中的集合
4.5.1 排序
4.5.2 嵌套查询
4.5.3 分组
4.5.4 使用连接
4.5.5 分区
4.6 小结
第5章 超越基本的内存数据查询
5.1 常见使用场景
5.1.1 查询非泛型集合
5.1.2 按照多个条件分组
5.1.3 动态查询
5.1.4 LINQtoTextFiles
5.2 设计模式
5.2.1 函数式创建模式
5.2.2 ForEach模式
5.3 性能分析
5.3.1 选择恰当的流操作方式
5.3.2 当心立即执行
5.3.3 LINQtoObjects会降低代码的性能吗
5.3.4 使用LINQtoObjects的代价
5.3.5 性能和简洁：鱼和熊掌不可兼得吗
5.4 小结
第三部分 查询关系型数据
第6章 LINQtoSQL入门
6.1 走入LINQtoSQL
6.1.1 创建对象映射
6.1.2 设定DataContext
6.2 通过LINQtoSQL读取数据
6.3 继续改进查询
6.3.1 过滤
6.3.2 排序和分组
6.3.3 聚集
6.3.4 连接
6.4 操作有层级关系的对象
6.5 数据加载的时机以及为何要关心这些
6.5.1 延迟加载
6.5.2 立即加载详细信息
6.6 更新数据
6.7 小结
第7章 揭开LINQtoSQL的本质
7.1 对象与关系数据的映射
7.1.1 通过在类中添加属性
7.1.2 使用外部XML文件实现映射
7.1.3 使用SqlMetal工具
7.1.4 LINQtoSQL设计器
7.2 将查询表达式转换为SQL
7.2.1 IQueryable接口
7.2.2 表达式树
7.3 业务实体的生命周期
7.3.1 跟踪变化
7.3.2 提交变化
7.3.3 操作离线数据
7.4 小结
第8章 LINQtoSQL高级特性
8.1 处理并发修改
8.1.1 悲观式并发
8.1.2 乐观式并发
8.1.3 处理并发异常
8.1.4 使用事务解决冲突
8.2 高级的数据库功能
8.2.1 使用SQL语句直接得到结果对象
8.2.2 使用存储过程
8.2.3 用户自定义函数
8.3 改进业务逻辑层
8.3.1 预编译的查询
8.3.2 使用部分类实现自定义业务逻辑
8.3.3 使用部分方法
8.3.4 使用对象继承
8.4 LINQtoEntities简介
8.5 小结
第四部分 操作XML
第9章 LINQtoXML入门
9.1 什么是XMLAPI
9.2 为什么需要另外一种XML编程API
9.3 LINQtoXML设计原则
9.3.1 核心概念：函数式创建
9.3.2 核心概念：上下文无关的XML创建过程
9.3.3 核心概念：简化了的名称
9.4 LINQtoXML中相关类的继承体系
9.5 在LINQ中操作XML
9.5.1 加载XML
9.5.2 解析XML
9.5.3 创建XML
9.5.4 使用VisualBasicXML字面量创建XML
9.5.5 创建XML文档
9.5.6 向XML中添加内容
9.5.7 从XML中移除内容
9.5.8 更新XML的内容
9.5.9 操作属性
9.5.10 保存XML
9.6 小结
第10章 使用LINQtoXML查询并转换XML
10.1 LINQtoXML轴方法
10.1.1 Element
10.1.2 Attribute
10.1.3 Elements
10.1.4 Descendants
10.1.5 Ancestors
10.1.6 ElementsAfterSelf、NodesAfterSelf、ElementsBeforeSelf和NodesBeforeSelf方法
10.1.7 VisualBasic的XML轴属性
10.2 标准查询操作符
10.2.1 使用Select进行投影
10.2.2 使用Where实现过滤
10.2.3 排序和分组
10.3 使用XPath查询LINQtoXML对象
10.4 转换XML
10.4.1 LINQtoXML转换
10.4.2 使用XSLT转换LINQtoXML对象
10.5 小结
第11章 LINQtoXML常见场景
11.1 根据XML构建对象
11.1.1 目标
11.1.2 实现
11.2 根据对象创建XML
11.2.1 目标
11.2.2 实现
11.3 根据数据库中的数据创建XML
11.3.1 目标
11.3.2 实现
11.4 过滤并混合从数据库以及XML中得到的数据
11.4.1 目标
11.4.2 实现
11.5 读取XML并更新数据库
11.5.1 目标
11.5.2 实现
11.6 将文本文件转换为XML
11.6.1 目标
11.6.2 实现
11.7 小结
第五部分 LINQ无处不在
第12章 扩展LINQ
12.1 探寻LINQ的扩展机制
12.1.1 LINQ各个特性是如何实现的
12.1.2 自定义LINQ扩展能够实现什么
12.2 创建自定义查询操作符
12.2.1 改进标准查询操作符
12.2.2 辅助或领域相关的查询操作符
12.3 基本查询操作符的自定义实现
12.3.1 回顾查询翻译机制
12.3.2 查询表达式模式的规范
12.3.3 示例1：跟踪标准查询操作符的执行过程
12.3.4 限制：查询表达式冲突
12.3.5 示例2：非泛型的、领域相关的操作符
12.3.6 示例3：非序列的查询操作符
12.4 查询Web服务：LINQtoAmazon
12.4.1 LINQtoAmazon介绍
12.4.2 需求
12.4.3 实现
12.5 IQueryable和IQueryProvider：LINQtoAmazon高级版本
12.5.1 IQueryable和IQueryProvider接口
12.5.2 实现
12.5.3 究竟发生了什么
12.6 小结
第13章 应用程序各层中的LINQ
13.1 LinqBooks应用程序概览
13.1.1 功能
13.1.2 程序UI概览
13.1.3 数据模型
13.2 LINQtoSQL及数据访问层
13.2.1 回顾传统的三层架构
13.2.2 用专门的数据访问层还是LINQtoSQL
13.2.3 LinqBooks中对LINQtoSQL的使用
13.3 LINQtoXML的使用
13.3.1 从Amazon中导入数据
13.3.2 生成RSS
13.4 LINQtoDataSet的使用
13.5 使用LINQtoObjects
13.6 可扩展性
13.6.1 自定义查询操作符
13.6.2 创建并使用自定义LINQ提供器
13.7 展望未来
13.7.1 自定义LINQ功能
13.7.2 LINQtoXSD：强类型的LINQtoXML
13.7.3 PLINQ：支持并行计算的LINQ
13.7.4 LINQtoEntities，ADO.NETEntityFramework的LINQ接口
13.8 小结
第14章 使用LINQ操作DataSet
14.1 LINQtoDataSet概览
14.2 DataSet回顾
14.2.1 DataSet使用场景及功能
14.2.2 DataSet是什么
14.2.3 VisualStudio2008和.NET3.5为支持LINQtoDataSet进行的改进
14.3 查询弱类型DataSet
14.3.1 为DataSet加载数据
14.3.2 不使用LINQ查询DataSet
14.3.3 使用LINQtoDataSet查询弱类型DataSet
14.4 查询强类型DataSet
14.4.1 生成强类型的DataSet
14.4.2 为强类型DataSet加载数据
14.4.3 使用LINQtoDataSet查询强类型DataSet
14.5 将LINQtoDataSet查询结果绑定至UI控件
14.5.1 使用CopyToDataTable将LINQtoDataSet查询结果复制到DataTable
14.5.2 使用AsDataView实现双向数据绑定
14.6 在LINQtoDataSet中使用查询操作符
14.6.1 用于DataRow的Field和SetField操作符
14.6.2 集合操作符以及用DataRowComparer比较DataRow
14.7 小结
附录 标准查询操作符[1]