标题：LINQ技术详解(C#2008版)
基本信息
  作者:(美国)Joseph C.Rattz.Jr. 译者:程胜 朱新宁 杨萍 
出版社：人民邮电出版社
页码：606 页
出版日期：2009年
ISBN：9787115207906
装帧：平装
开本：16
定价：79.00
内容简介
《LINQ技术详解C#2008版》将原理介绍与实践操作相结合，全面系统地阐述了Microsoft C# 2008中的语言集成查询（LINQ）技术的专业知识，包括其原理、功能和应用。特别对LINQ在对象、XML、数据集和SQL上的应用进行了深入分析，详细讲解了这些应用可以使用的操作符和操作符原型，并分别给出使用这些操作符的示例和说明，以便读者理解和编写自己的LINQ代码。
《LINQ技术详解C#2008版》可以为LINQ的初学者、中级用户和高级用户等不同层次的读者提供相应的信息，不仅为LINQ初学者提供入门级的知识和实例，还可以作为LINQ中高级开发人员的工具书。
作者简介
拉特兹（JOSEPH C.RATTZ,JR.）从l990年开始从事软件开发工作，当时有一个朋友请求他帮忙为Commodore Amiga公司编写一个名为ANSI Master的ANSI文本编辑器。后来他又编写了猜词游戏(Gallows)软件。他的编程经历是从编译这些Basic语言开始的，为了获得更快的速度和更强大的功能，他后来使用C语言编写程序。之后，Joe开发了一些应用程序，并卖给了JumpDisk，一家Amiga碟片杂志，也就是Amiga World杂志。由于他居住在一个小城镇，并在非常孤立的平台上进行开发，因此Joe体验到所有错误的编写代码的方法。在努力尝试提高比较低级的应用程序编程水平的时候，他领悟到简单、可维护代码的重要性。在Joe第一次发现可以使用源代码级调试器的时候，就对它一见钟情了。 两年以后，Joe获得了他的第一个软件开发机会，成为了Policy Management Systems Corporation公司的初级程序员，他负责在OS/2和Presentation Manager平台上开发基于客户机朋艮务器的保险应用程序。多年来，在为SCT、DocuCorp、IBM、亚特兰大奥委会、CheckFree、NCR、EDS、Delta Technology、Radiant Systems和Genuine Parts Company开发应用程序的过程中，他又获得了C++、UNIX、Java、ASP、ASP.NET、C#、HTML、DHTML和XML的开发技能。Joe喜欢创造性的用户界面设计，并且很重视在服务器端进行规范性开发的必要性。但是，要让他自己选择，他最喜欢的兼职开发工作就是调试代码。 Joe在Genuine Parts Company公司(NAPA的母公司)的Automotive Part Group Information System部门工作过，在那里他是为自己的“孩子”而工作，这个“孩子”就是Storefront网站。这个为NAPA商店设计的网站可以在IBMAS/400网络上提供浏览账号和数据的功能。
编辑推荐
亲爱的读者：《LINQ技术详解C#2008版》是一本完全关于代码的书。确切地讲。《LINQ技术详解C#2008版》从代码开始。从代码结束。在编写《LINQ技术详解C#2008版》时。我期望创建一个有意义的LI NQ示例的宝库。《LINQ技术详解C#2008版》并没有向读者展示最简单的使用示例，我努力全面介绍有关LINQ的知识，并演示可以使用的所有LI NQ操作符和原型。通过这些信息。读者可以按照其本身的设计来使用LINQ，并让自己的投资获得最大的回报。
贯穿全书，我的目的是以一种读者可以使用的形式提供实际有用的信息。因此，《LINQ技术详解C#2008版》并没有重点介绍无法应用于实际开发中的复杂的示例应用程序，而是重点介绍了每个LINQ操作符、方法或类。不过。在需要使用示例来真正演示一个问题时，也会恰如其分地出现一些比较复杂的示例。例如。演示如何处理并发冲突的代码示例实际上创建了并发冲突，这样读者就可以逐步了解代码并全面了解示例了。
《LINQ技术详解C#2008版》是写给那些对C#有初步了解，想要学习LINQ和DLINQ相关的C#3.0语言功能的读者的。读者不需要熟悉所有最新的C#2.0或3.0功能就能理解LINQ的专业知识。在阅读《LINQ技术详解C#2008版》的高级语言功能部分时。也许需要具备更深入的知识，那么我会从最基础的地方开始介绍。以确保每个读者都能充分准备好必要的知识。
Joseph C.Rattz,Jr.
目录
第1部分 LINQ专业指南：C#2008中的语言集成查询
第1章 你好!LINQ 2
1.1 思维转换 2
1.1.1 查询XML 3
1.1.2 查询SQLServer数据库 4
1.2 绪论 5
1.2.1 LINQ是关于数据查询的技术 6
1.2.2 LINQ的组件 6
1.2.3 如何获得LINQ 8
1.3 LINQ并不仅仅用于查询 8
1.4 初学提示 11
1.4.1 在容易混淆的地方使用var关键字 12
1.4.2 对以前版本的集合使用Cast或OfType操作符 13
1.4.3 优先使用OfType操作符而不是Cast操作符 14
1.4.4 不要假定查询是不会出错的 15
1.4.5 利用延迟查询 16
1.4.6 使用DataContext日志 16
1.4.7 使用LINQ论坛 18
1.5 小结 18
第2章 C#3.0语言的LINQ增强功能 19
2.1 C#3.0语言的新功能 19
2.1.1 lambda表达式 20
2.1.2 表达式树 25
2.1.3 关键字变量var.对象初始化和匿名类型 26
2.1.4 扩展方法 31
2.1.5 分部方法 36
2.1.6 查询表达式 38
2.2 小结 50
第2部分 LINQ到对象
第3章 LINQ到对象简介 52
3.1 LINQ到对象概述 52
3.2 IEnumerableT.序列和标准查询操作符 53
3.3 返回IEnumerableT.生成和延迟查询 54
3.4 Func委托 57
3.5 按字母顺序的标准查询操作符交叉引用 58
3.6 小结 60
第4章 延迟操作符 61
4.1 引用的命名空间 61
4.2 引用的程序集 62
4.3 公共类 62
4.4 按目的分类的延迟操作符 64
4.4.1 限定操作符 64
4.4.2 投影操作符 66
4.4.3 分区操作符 76
4.4.4 串联操作符 83
4.4.5 排序操作符 86
4.4.6 连接操作符 103
4.4.7 分组操作符 106
4.4.8 集合操作符 112
4.4.9 转换操作符 118
4.4.10 元素操作符 125
4.4.11 生成操作符 129
4.5 小结 132
第5章 非延迟操作符 133
5.1 引用的命名空间 133
5.2 公共类 133
5.3 按目的分类的非延迟操作符 136
5.3.1 转换操作符 137
5.3.2 相等操作符 149
5.3.3 元素操作符 152
5.3.4 量词操作符 164
5.3.5 聚合操作符 169
5.4 小结 183
第3部分 LINQ到XML
第6章 LINQ到XML简介 186
6.1 简介 189
6.2 假冒的W3CDOMXMLAPI 189
6.3 小结 191
第7章 LINQ到XMLAPI 193
7.1 引用的命名空间 193
7.2 重大的API增强设计 194
7.2.1 使用功能构造来简化XML树构造 194
7.2.2 从以文档为中心到以元素为中心 196
7.2.3 命名.命名空间和前缀 198
7.2.4 提取节点的值 201
7.3 LINQ到XML对象模型 203
7.4 延迟执行查询.节点删除和Halloween问题 204
7.5 XML的创建 207
7.5.1 使用XElement类创建元素 207
7.5.2 使用XAttribute类创建属性 210
7.5.3 使用XComments类创建注释 211
7.5.4 使用XContainer类创建容器 212
7.5.5 使用XDeclaration类创建声明 212
7.5.6 使用XDocumentType类创建文档类型 213
7.5.7 使用XDocument类创建文档 214
7.5.8 使用XName类创建名称 215
7.5.9 使用XNamespace类创建命名空间 216
7.5.10 使用XNode类创建节点 216
7.5.11 使用XprocessingInstruction类创建处理指令 216
7.5.12 使用XstreamingElement类创建流元素 218
7.5.13 使用XText类创建文本 220
7.5.14 使用XCData类创建CData 220
7.6 XML的输出 221
7.6.1 使用XDocument.Save()保存文档 221
7.6.2 使用XElement.Save()保存文档 222
7.7 XML的输入 223
7.7.1 使用XDocument.Load()加载文档 223
7.7.2 使用XElement.Load()加载文档 225
7.7.3 使用XDocument.Parse()或XElement.Parse()解析文档 225
7.8 XML的遍历 226
7.8.1 遍历属性 227
7.8.2 遍历方法 231
7.9 XML的修改 245
7.9.1 添加节点 246
7.9.2 删除节点 250
7.9.3 更新节点 253
7.9.4 子XElement对象的XElement.SetElementValue()方法 257
7.10 XML的属性(Attribute) 259
7.10.1 属性(Attribute)的创建 259
7.10.2 属性(Attribute)的遍历 259
7.10.3 属性(Attribute)的修改 263
7.11 XML的注释 267
7.11.1 使用XObject.AddAnnotation()方法添加注释 268
7.11.2 使用XObject.Annotation()或XObject.Annotations()方法访问注释 268
7.11.3 使用XObject.RemoveAnnotations()方法删除注释 268
7.11.4 注释示例 268
7.12 XML的事件 272
7.12.1 XObject.Changing 272
7.12.2 XObject.Changed 272
7.12.3 事件的两个示例 273
7.12.4 技巧提示或不确定问题 277
7.13 小结 277
第8章 LINQ到XML操作符 278
8.1 LINQ到XML操作符简介 278
8.2 Ancestors操作符 279
8.2.1 原型 279
8.2.2 示例 280
8.3 AncestorsAndSelf操作符 283
8.3.1 原型 284
8.3.2 示例 284
8.4 Attributes操作符 286
8.4.1 原型 286
8.4.2 示例 287
8.5 DescendantNodes操作符 289
8.5.1 原型 289
8.5.2 示例 289
8.6 DescendantNodesAndSelf操作符 291
8.6.1 原型 291
8.6.2 示例 291
8.7 Descendants操作符.. 292
8.7.1 原型 292
8.7.2 示例 293
8.8 DescendantsAndSelf操作符 295
8.8.1 原型 295
8.8.2 示例 296
8.9 Elements操作符 298
8.9.1 原型 298
8.9.2 示例 298
8.10 InDocumentOrder操作符 300
8.10.1 原型 300
8.10.2 示例 301
8.11 Nodes操作符 302
8.11.1 原型 302
8.11.2 示例 303
8.12 Remove操作符 304
8.12.1 原型 304
8.12.2 示例 304
8.13 小结 306
第9章 其他的XML功能 308
9.1 引用的命名空间 308
9.2 查询 309
9.2.1 不需要到达 309
9.2.2 复杂查询 311
9.3 转换 317
9.3.1 使用XSLT进行转换 318
9.3.2 使用功能构造进行转换 320
9.3.3 提示 322
9.4 验证 329
9.4.1 扩展方法 329
9.4.2 原型 329
9.4.3 获得XML结构描述 330
9.4.4 示例 332
9.5 XPath 344
9.5.1 原型 344
9.5.2 示例 345
9.6 小结 345
第4部分 LINQ到数据集
第10章 LINQ到数据集操作符 348
10.1 程序集引用 349
10.2 引用的命名空间 349
10.3 示例中使用的公共代码 349
10.4 数据行集合操作符 351
10.4.1 Distinct操作符 351
10.4.2 Except操作符 355
10.4.3 Intersect操作符 358
10.4.4 Union操作符 360
10.4.5 SequenceEqual操作符 362
10.5 数据行字段操作符 364
10.5.1 FieldT操作符 368
10.5.2 SetFieldT操作符 373
10.6 数据表操作符 376
10.6.1 AsEnumerable操作符 376
10.6.2 CopyToDataTableDataRow操作符 377
10.7 小结 383
第11章 其他数据集功能 384
11.1 引用的命名空间 384
11.2 类型化数据集 384
11.3 综合示例 386
11.4 小结 389
第5部分 LINQ到SQL
第12章 LINQ到SQL简介 392
12.1 LINQ到SQL简介 393
12.1.1 DataContext类 395
12.1.2 实体类 395
12.1.3 关联 396
12.1.4 并发冲突检测 397
12.1.5 并发冲突解决 397
12.2 运行示例的先决条件 397
12.2.1 获得Northwind数据库的合适版本 397
12.2.2 生成Northwind实体类 398
12.2.3 生成NorthwindXML映射文件 399
12.3 使用LINQ到SQLAPI 399
12.4 IQueryableT 400
12.5 一些常用方法 400
12.5.1 GetStringFromDb() 400
12.5.2 ExecuteStatementInDb() 401
12.6 小结 402
第13章 LINQ到SQL技巧和工具 403
13.1 LINQ到SQL技巧和工具简介 403
13.2 技巧和提示 403
13.2.1 使用DataContext.Log属性 404
13.2.2 使用GetChangeSet()方法 405
13.2.3 考虑使用分部类或映射文件 405
13.2.4 考虑使用分部方法 405
13.3 工具 406
13.3.1 SQLMetal 406
13.3.2 对象关系设计器 411
13.4 结合使用SQLMetal和对象关系设计器 423
13.5 小结 423
第14章 LINQ到SQL数据库操作 425
14.1 运行示例的先决条件 425
14.1.1 一些常用方法 425
14.1.2 使用LINQ到SQLAPI 426
14.2 标准数据库操作 426
14.2.1 插入 426
14.2.2 查询 431
14.2.3 更新 454
14.2.4 删除 457
14.3 覆盖数据库修改语句 460
14.3.1 覆盖插入方法 461
14.3.2 覆盖更新方法 461
14.3.3 覆盖删除方法 461
14.3.4 示例 462
14.3.5 对象关系设计器中的覆盖功能 464
14.3.6 一些考虑 464
14.4 SQL翻译 465
14.5 小结 467
第15章 LINQ到SQL实体类 468
15.1 运行示例的先决条件 468
15.2 实体类 468
15.2.1 创建实体类 468
15.2.2 XML外部映射文件结构描述 498
15.2.3 投影到实体类或非实体类 499
15.3 使用分部方法扩展实体类 504
15.4 重要的System.Data.LinqAPI类 506
15.4.1 EntitySetT 507
15.4.2 EntityRefT 507
15.4.3 TableT 509
15.4.4 IExecuteResult 510
15.4.5 ISingleResultT 511
15.4.6 IMultipleResults 511
15.5 小结 512
第16章 DataContext 514
16.1 运行示例的先决条件 514
16.1.1 一些常用方法 514
16.1.2 使用LINQ到SQLAPI 514
16.2 [Your]DataContext类 515
16.3 DataContext类 515
16.3.1 主要用途 518
16.3.2 DataContext()和[Your]DataContext() 524
16.3.3 SubmitChanges() 537
16.3.4 DatabaseExists() 545
16.3.5 CreateDatabase() 546
16.3.6 DeleteDatabase() 547
16.3.7 CreateMethodCallQuery() 548
16.3.8 ExecuteQuery() 550
16.3.9 Translate() 552
16.3.10 ExecuteCommand() 554
16.3.11 ExecuteMethodCall() 555
16.3.12 GetCommand() 563
16.3.13 GetChangeSet() 564
16.3.14 GetTable 566
16.3.15 Refresh() 568
16.4 小结 574
第17章 并发冲突 576
17.1 运行示例的先决条件 576
17.1.1 一些常用方法 576
17.1.2 使用LINQ到SQLAPI 576
17.2 并发冲突 576
17.2.1 乐观并发 577
17.2.2 悲观并发 588
17.2.3 中间层和服务器的可选方案 591
17.3 小结 593
第18章 其他SQL功能 594
18.1 运行示例的先决条件 594
18.1.1 使用LINQ到SQLAPI 594
18.1.2 使用LINQ到XMLAPI 594
18.2 数据库视图 594
18.3 实体类继承 596
18.4 事务 602
18.5 小结 604
……