《精通LINQ程序设计》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(意)皮尔罗斯,(意)鲁索著;李牧,阎松涛,傅调平译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2009
  • ISBN:9787302211402
  • 页数:596 页
图书介绍:本书全面、深入地剖析了LINQ的特性。全书分为6个部分,内容涵盖LINQ基础、LINQ到关系数据、LINQ到关系数据、LINQ to XML、高级LINQ和LINQ的应用等。

第Ⅰ部分 LINQ基础 3

第1章 LINQ简介 3

1.1LINQ是什么 3

1.2为什么需要LINQ 4

1.3LINQ如何工作 6

1.3.1关系模型与层/网络模型的比较 7

1.3.2操作XML数据 12

1.4语言集成 14

1.4.1声明性编程 15

1.4.2类型检测 16

1.4.3透明跨越不同的类型系统 17

1.5LINQ实现形式 17

1.5.1LINQ to Objects 17

1.5.2LINQ to ADO.NET 18

1.5.3LINQ to XML 19

1.6小结 19

第2章 LINQ语法基础 20

2.1LINQ查询 20

2.1.1查询语法 20

2.1.2完整的查询语法 24

2.2查询关键字 25

2.2.1from子句 25

2.2.2where子句 28

2.2.3select子句 28

2.2.4group和into子句 29

2.2.5orderby子句 31

2.2.6join子句 32

2.2.7let子句 36

2.2.8其他的Visual Basic 2008关键字 36

2.3延迟查询求值和扩展方法解析 37

2.3.1延迟查询求值 37

2.3.2扩展方法解析 38

2.4关于LINQ查询的最后一些思考 40

2.4.1退化查询表达式 40

2.4.2异常处理 41

2.5小结 43

第3章 LINQ to Objects 44

3.1查询操作符 47

3.1.1Where操作符 47

3.1.2投影操作符 48

3.1.3排序操作符 52

3.1.4分组操作符 56

3.1.5联接操作符 59

3.1.6集合操作符 63

3.1.7聚合操作符 68

3.1.8Visual Basic 2008中的聚合操作符 76

3.1.9生成操作符 78

3.1.10量词操作符 80

3.1.11分区操作符 82

3.1.12元素操作符 85

3.1.13其他操作符 89

3.2转换操作符 90

3.2.1AsEnumerable 90

3.2.2ToArray和ToList 92

3.2.3ToDictionary 93

3.2.4ToLookup 94

3.2.5OfType和Cast 96

3.3小结 96

第Ⅱ部分 针对关系数据的LINQ 99

第4章 LINQ to SQL:查询数据 99

4.1LINQ to SQL中的实体 99

4.2数据建模 103

4.2.1DataContext类 103

4.2.2实体类 104

4.2.3实体继承 106

4.2.4唯一的对象标识符 108

4.2.5实体约束 109

4.2.6实体间的关联 109

4.2.7关系模型与分层模型的对比 116

4.3数据查询 116

4.3.1投影 118

4.3.2存储过程和用户自定义函数 120

4.3.3编译查询 127

4.3.4查询数据的不同方法 129

4.3.5直接查询 131

4.3.6实体的延迟载入 133

4.3.7属性的延迟载入 135

4.3.8访问只读的DataContext 136

4.3.9LINQ to SQL的局限性 137

4.4在LINQ to SQL的环境中进行思考 138

4.4.1IN/EXISTS子句 138

4.4.2精简的SQL查询 141

4.4.3.NET代码与SQL查询的混合 142

4.5小结 145

第5章 LINQ to SQL:管理数据 146

5.1CRUD和CUD操作 146

5.1.1实体更新 146

5.1.2数据库更新 153

5.1.3自定义插入、更新和删除操作 157

5.2数据库交互 158

5.2.1并发操作 158

5.2.2事务 162

5.2.3异常 163

5.3数据库和实体 164

5.3.1保留有效关系的实体属性 164

5.3.2派生实体类 166

5.3.3附加实体 168

5.3.4绑定元数据 172

5.3.5.NET和SQL类型体系的区别 174

5.4小结 175

第6章 LINQ to SQL的工具 176

6.1文件类型 176

6.1.1DBML(数据库标记语言) 176

6.1.2C#和Visual Basic源代码 178

6.1.3XML(外部的映射文件) 180

6.1.4LINQ to SQL文件的生成 181

6.2SQLMetal 183

6.2.1从数据库生成DBML文件 183

6.2.2从数据库生成源代码和映射文件 184

6.2.3从DBML文件生成源代码和映射文件 185

6.3使用对象关系设计器 185

6.3.1DataContext的属性 188

6.3.2实体类 189

6.3.3实体间的关联 192

6.3.4实体继承 198

6.3.5存储过程和用户自定义函数 199

6.3.6视图和架构支持 202

6.4小结 203

第7章 LINQ to DataSet 204

7.1LINQ to DataSet简介 204

7.2使用LINQ载入数据集 204

7.2.1用LINQ to SQL载入数据集 205

7.2.2用LINQ to DataSet载入数据 207

7.3使用LINQ查询数据集 208

7.3.1内部的DataTable.AsEnumerable 210

7.3.2用LINQ创建DataView实例 211

7.3.3使用LINQ查询具有类型的DataSet 212

7.3.4访问没有类型的DataSet数据 213

7.3.5DataRow比较 213

7.4小结 214

第8章 LINQ to Entities 215

8.1查询实体数据模型 215

8.1.1概述 215

8.1.2查询表达式 217

8.2管理数据 223

8.3查询引擎 223

8.3.1查询的执行 223

8.3.2深入ObjectQuery<T> 227

8.3.3经过编译的查询 229

8.4LINQ to SQL和LINQ to Entities 230

8.5小结 230

第Ⅲ部分 LINQ和XML 233

第9章 LINQ to XML:管理XML Infoset 233

9.1LINQ to XML简介 233

9.2LINQ to XML编程 236

9.2.1XDocument 237

9.2.2XElement 238

9.2.3XAttribute 241

9.2.4XNode 242

9.2.5XName和XNamespace 243

9.2.6其他的X*类 248

9.2.7XStreamingElement 249

9.2.8XObject和Annotations 250

9.3读取、遍历与改变XML 253

9.4小结 255

第10章 LINQ to XML:查询节点 256

10.1查询XML 256

10.1.1Attribute和Attributes 256

10.1.2Element和Elements 257

10.1.3“类似”扩展方法的XPath轴 258

10.1.4XNode选择方法 262

10.1.5InDocumentOrder 264

10.2延迟的查询求值 264

10.3对XML的LINQ查询 265

10.4使用LINQ to XML转换XML 271

10.5支持XSD和类型节点的有效性 273

10.6支持XPath和System.Xml.XPath 276

10.7LINQ to XML的安全性 278

10.8LINQ to XML序列化 279

10.9小结 280

第Ⅳ部分 高级LINQ 283

第11章 表达式目录树详解 283

11.1lambda表达式 283

11.2什么是表达式目录树 285

11.2.1创建表达式目录树 286

11.2.2封装 287

11.2.3不可变和修改 289

11.3解析表达式目录树 293

11.3.1Expression类 295

11.3.2表达式目录树节点类型 296

11.3.3实用节点 299

11.4访问表达式目录树 302

11.5动态构建表达式目录树 312

11.5.1编译器如何产生表达式目录树 312

11.5.2合并现有的表达式目录树 315

11.5.3动态组成表达式目录树 319

11.6小结 323

第12章 扩展LINQ 324

12.1自定义操作符 324

12.2现有操作符的特化 328

12.2.1危险的做法 331

12.2.2特化的限制 332

12.3创建自定义的LINQ提供程序 340

12.3.1IQueryable接口 341

12.3.2从IEnumerable到IQueryable与从IQueryable到IEnumerable 343

12.3.3IQueryable和IQueryProvider的本质 345

12.3.4编写FlightQueryProvider 348

12.4小结 370

第13章 并行LINQ 371

13.1.NET Framework并行扩展 371

13.1.1Parallel.For和Parallel.ForEach方法 371

13.1.2Do方法 373

13.1.3Task类 374

13.1.4Future<T>类 375

13.1.5并发考虑 376

13.2使用PLINQ 378

13.2.1PLINQ使用的线程 378

13.2.2PLINQ的实现形式 381

13.2.3PLINQ的用法 382

13.2.4并行执行的副作用 385

13.2.5PLINQ的异常处理 388

13.2.6PLINQ和其他的LINQ实现形式 389

13.3小结 391

第14章 其他的LINQ实现形式 392

14.1数据库访问 392

14.2没有数据库的数据访问 393

14.3LINQ to Entity域模型 394

14.4LINQ to Services 394

14.5系统工程师的LINQ 395

14.6动态的LINQ 396

14.7其他的LINQ增强功能和工具 396

14.8小结 397

第Ⅴ部分 LINQ的应用 401

第15章 在多层解决方案中的LINQ 401

15.1多层解决方案的特征 401

15.2两层解决方案中的LINQ to SQL 403

15.3在n层解决方案中的LINQ 404

15.3.1用LINQ to SQL替代DAL 404

15.3.2用XML外部映射抽取LINQ to SQL 405

15.3.3在实际的抽象内容中使用LINQ to SQL 408

15.3.4用LINQ to XML作为数据层 415

15.3.5用LINQ to Entities作为数据层 419

15.4在业务层中的LINQ 419

15.4.1优化代码的LINQ to Objects 420

15.4.2IQueryable<T>与IEnumerable<T>的对比 422

15.4.3识别正确的工作单元 425

15.4.4处理事务 426

15.4.5并发性和线程安全 426

15.5小结 426

第16章 LINQ和ASP.NET 427

16.1ASP.NET 3.5 427

16.1.1ListView 427

16.1.2ListView数据绑定 430

16.1.3DataPager 434

16.2LinqDataSource 438

16.2.1用LinqDataSource和DataPager分页数据 443

16.2.2用LinqDataSource处理数据修改 446

16.2.3用LinqDataSource进行自定义选取 449

16.2.4使用具有自定义类型的LinqDataSource 450

16.3绑定LINQ查询 452

16.4小结 456

第17章 LINQ和WPF/Silverlight 457

17.1与WPF一起使用LINQ 457

17.1.1绑定单个实体和属性 457

17.1.2绑定实体集 461

17.2与Silverlight一起使用LINQ 465

17.3小结 466

第18章 LINQ和Windows通信层编程框架 467

18.1WCF综述 467

18.1.1WCF协议和服务 468

18.1.2面向服务的协议 471

18.1.3端点和服务宿主 472

18.1.4服务用户 474

18.2WCF和LINQ to SQL 477

18.2.1LINQ to SQL的实体和序列化 477

18.2.2用WCF发布LINQ to SQL的实体 481

18.2.3采取WCF使用LINQ to SQL的实体 484

18.3LINQ to Entities和WCF 487

18.4查询表达式序列化 495

18.5小结 496

第Ⅵ部分 附录 501

附录A ADO.NET实体框架 501

A.1ADO.NET的标准方法 501

A.2从物理层抽取 504

A.3实体数据模型 506

A.3.1实体数据模型文件 506

A.3.2实体数据模型设计器和向导 511

A.3.3实体数据模型生成工具 514

A.3.4实体数据模型规则和定义 515

A.4用ADO.NET查询实体 515

A.5用LINQ查询ADO.NET实体 522

A.6用对象服务管理数据 523

A.6.1对象身份管理 525

A.6.2事务性操作 526

A.7手动实现的实体 526

A.8LINQ to SQL和ADO.NET实体框架 527

A.9小结 527

附录B C# 3.0:新语言特征 528

B.1重温C# 2.0 528

B.1.1泛型 528

B.1.2委托 530

B.1.3匿名方法 532

B.1.4枚举量和Yield 533

B.2C#3.0特征 539

B.2.1自动实现的属性 539

B.2.2本地类型推断 540

B.2.3lambda表达式 543

B.2.4扩展方法 548

B.2.5对象初始化表达式 554

B.2.6匿名类型 559

B.2.7查询表达式 563

B.2.8局部方法 564

B.3小结 566

附录C Visual Basic 2008:新语言特征 567

C.1Visual Basic 2008和可空类型 567

C.2If操作符 568

C.3Visual Basic 2008对应于C#3.0的特征 570

C.3.1本地类型推断 570

C.3.2扩展方法 571

C.3.3对象初始化表达式 573

C.3.4匿名类型 575

C.3.5查询表达式 578

C.3.6lambda表达式 580

C.3.7闭包 581

C.3.8局部方法 582

C.4Visual Basic 2008和C# 3.0不对应的特征 583

C.4.1XML支持 584

C.4.2非严格委托 589

C.5C#3.0和Visual Basic 2008不对应的特征 590

C.5.1yield关键字 590

C.5.2匿名方法 591

C.6小结 591