《LINQ实战》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(法)FabriceMarguerie,(美)Steve,EichertJimWooley著;陈黎夫译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2009
  • ISBN:9787115208514
  • 页数:416 页
图书介绍:本书先介绍了LINQ技术及C#和VB为此提供的新语言特性,接着介绍了LINQ to Objects、LINQ to SQL、LINQ to XML,最后介绍了LINQ的可扩展性、如何使用各种LINQ功能以及LINQ to DataSet。

第一部分 从这里开始 2

第1章 LINQ简介 2

1.1LINQ是什么 2

1.1.1概览 3

1.1.2LINQ的功能 3

1.1.3作为语言扩展的LINQ 4

1.2为什么需要LINQ 6

1.2.1常见问题 6

1.2.2解决理念上的失调 8

1.2.3LINQ给出解决方案 12

1.3LINQ的设计目标及起源 13

1.3.1LINQ项目的设计目标 13

1.3.2一点历史 14

1.4LINQ to Objects初步:查询内存中的集合 15

1.4.1先决条件 15

1.4.2Hello LINQ to Objects 17

1.5LINQ to XML初步:查询XML文档 20

1.5.1为什么需要LINQ to XML 20

1.5.2Hello LINQ to XML 22

1.6LINQ to SQL初步:查询关系型数据库 26

1.6.1LINQ to SQL功能概览 26

1.6.2Hello LINQ to SQL 26

1.6.3进一步了解LINQ to SQL 30

1.7小结 30

第2章 C#和VB语言的增强特性 31

2.1新语言的增强特性一瞥 31

2.1.1列出当前正在运行的所有进程 32

2.1.2将返回结果封装成类 33

2.2隐式类型局部变量 34

2.2.1语法 35

2.2.2使用隐式类型局部变量改进实例程序 35

2.3对象和集合的初始化器 37

2.3.1引入对象初始化器的动机 37

2.3.2集合初始化器 38

2.3.3用对象初始化器改进实例程序 39

2.4Lambda表达式 40

2.4.1委托回顾 40

2.4.2匿名方法 42

2.4.3Lambda表达式介绍 42

2.5扩展方法 47

2.5.1创建扩展方法的示例 47

2.5.2更多使用LINQ标准查询操作符的例子 50

2.5.3将扩展方法引入到实例程序中 51

2.5.4注意事项 52

2.6匿名类型 54

2.6.1使用匿名类型组合数据 55

2.6.2没有名字的类型也是类型 55

2.6.3使用匿名类型改进实例程序 56

2.6.4匿名类型的限制 57

2.7小结 58

第3章 LINQ构建块 61

3.1LINQ对.NET的扩展 61

3.1.1语言扩展回顾 61

3.1.2构成LINQ基础的核心元素 62

3.2序列 63

3.2.1IEnumerable<T>接口 63

3.2.2迭代器回顾 64

3.2.3延迟查询执行 66

3.3查询操作符 69

3.3.1查询操作符是什么 69

3.3.2标准查询操作符 71

3.4查询表达式 72

3.4.1查询表达式是什么 72

3.4.2编写查询表达式 73

3.4.3标准查询操作符与查询表达式的关系 75

3.4.4限制 76

3.5表达式树 78

3.5.1Lambda表达式回顾 78

3.5.2表达式树是什么 78

3.5.3IQueryable,另一种实现延迟查询执行的方法 81

3.6LINQ的程序集以及命名空间 81

3.7小结 83

第二部分 查询内存中的对象 86

第4章 熟悉LINQ to Objects 86

4.1实例程序简介 86

4.1.1程序目标 86

4.1.2程序功能 87

4.1.3业务逻辑实体 87

4.1.4数据库架构 87

4.1.5示例数据 89

4.2用LINQ操作内存中的集合 90

4.2.1能够查询什么 90

4.2.2支持的操作 94

4.3在ASP.NET和Windows Forms中使用LINQ 95

4.3.1Web应用程序中的数据绑定 95

4.3.2Windows Forms应用程序中的数据绑定 100

4.4常用的标准查询操作符 103

4.4.1约束操作符where 104

4.4.2投影操作符 105

4.4.3Distinct操作符 107

4.4.4转换操作符 108

4.4.5聚合操作符 109

4.5用不同的方式显示内存中的集合 110

4.5.1排序 110

4.5.2嵌套查询 111

4.5.3分组 113

4.5.4使用连接 114

4.5.5分区 117

4.6小结 121

第5章 超越基本的内存数据查询 122

5.1常见使用场景 122

5.1.1查询非泛型集合 123

5.1.2按照多个条件分组 125

5.1.3动态查询 127

5.1.4LINQ to Text Files 135

5.2设计模式 137

5.2.1函数式创建模式 138

5.2.2ForEach模式 140

5.3性能分析 142

5.3.1选择恰当的流操作方式 142

5.3.2当心立即执行 144

5.3.3LINQ to Objects会降低代码的性能吗 146

5.3.4使用LINQ to Objects的代价 149

5.3.5性能和简洁:鱼和熊掌不可兼得吗 151

5.4小结 152

第三部分 查询关系型数据 156

第6章 LINQ to SQL入门 156

6.1走入LINQ to SQL 157

6.1.1创建对象映射 159

6.1.2设定DataContext 161

6.2通过LINQ to SQL读取数据 161

6.3继续改进查询 165

6.3.1过滤 165

6.3.2排序和分组 167

6.3.3聚集 168

6.3.4连接 169

6.4操作有层级关系的对象 171

6.5数据加载的时机以及为何要关心这些 174

6.5.1延迟加载 174

6.5.2立即加载详细信息 175

6.6更新数据 177

6.7小结 179

第7章 揭开LINQ to SQL的本质 180

7.1对象与关系数据的映射 180

7.1.1通过在类中添加属性 181

7.1.2使用外部XML文件实现映射 185

7.1.3使用SqtMetal工具 186

7.1.4LINQ to SQL设计器 188

7.2将查询表达式转换为SQL 190

7.2.1IQueryable接口 190

7.2.2表达式树 191

7.3业务实体的生命周期 193

7.3.1跟踪变化 195

7.3.2提交变化 196

7.3.3操作离线数据 198

7.4小结 200

第8章 LINQ to SQL高级特性 201

8.1处理并发修改 201

8.1.1悲观式并发 201

8.1.2乐观式并发 202

8.1.3处理并发异常 204

8.1.4使用事务解决冲突 207

8.2高级的数据库功能 208

8.2.1使用SQL语句直接得到结果对象 209

8.2.2使用存储过程 210

8.2.3用户自定义函数 217

8.3改进业务逻辑层 220

8.3.1预编译的查询 220

8.3.2使用部分类实现自定义业务逻辑 221

8.3.3使用部分方法 223

8.3.4使用对象继承 225

8.4LINQ to Entities简介 229

8.5小结 231

第四部分 操作XML 234

第9章 LINQ to XML入门 234

9.1什么是XML API 234

9.2为什么需要另外一种XML编程API 235

9.3LINQ to XML设计原则 236

9.3.1核心概念:函数式创建 238

9.3.2核心概念:上下文无关的XML创建过程 238

9.3.3核心概念:简化了的名称 239

9.4LINQ to XML中相关类的继承体系 241

9.5在LINQ中操作XML 243

9.5.1加载XML 243

9.5.2解析XML 245

9.5.3创建XML 246

9.5.4使用Visual Basic XML字面量创建XML 249

9.5.5创建XML文档 251

9.5.6向XML中添加内容 254

9.5.7从XML中移除内容 255

9.5.8更新XML的内容 256

9.5.9操作属性 258

9.5.10保存XML 258

9.6小结 259

第10章 使用LINQ to XML查询并转换XML 260

10.1LINQ to XML轴方法 261

10.1.1Element 262

10.1.2Attribute 263

10.1.3Elements 264

10.1.4Descendants 264

10.1.5Ancestors 267

10.1.6ElementsAfterSelf、Nodes-AfterSelf、ElementsBefore-Self和NodesBeforeSelf方法 268

10.1.7Visual Basic的XML轴属性 269

10.2标准查询操作符 271

10.2.1使用Select进行投影 273

10.2.2使用where实现过滤 274

10.2.3排序和分组 275

10.3使用XPath查询LINQ to XML对象 278

10.4转换XML 279

10.4.1LINQ to XML转换 279

10.4.2使用XSLT转换LINQ to XML对象 282

10.5小结 284

第11章 LINQ to XML常见场景 285

11.1根据XML构建对象 285

11.1.1目标 286

11.1.2实现 287

11.2根据对象创建XML 290

11.2.1目标 290

11.2.2实现 291

11.3根据数据库中的数据创建XML 295

11.3.1目标 296

11.3.2实现 297

11.4过滤并混合从数据库以及XML中得到的数据 301

11.4.1目标 302

11.4.2实现 302

11.5读取XML并更新数据库 306

11.5.1目标 306

11.5.2实现 307

11.6将文本文件转换为XML 319

11.6.1目标 319

11.6.2实现 320

11.7小结 322

第五部分 LINQ无处不在 324

第12章 扩展LINQ 324

12.1探寻LINQ的扩展机制 324

12.1.1LINQ各个特性是如何实现的 325

12.1.2自定义LINQ扩展能够实现什么 326

12.2创建自定义查询操作符 327

12.2.1改进标准查询操作符 327

12.2.2辅助或领域相关的查询操作符 330

12.3基本查询操作符的自定义实现 334

12.3.1回顾查询翻译机制 334

12.3.2查询表达式模式的规范 335

12.3.3示例1:跟踪标准查询操作符的执行过程 337

12.3.4限制:查询表达式冲突 338

12.3.5示例2:非泛型的、领域相关的操作符 340

12.3.6示例3:非序列的查询操作符 342

12.4查询Web服务:LINQ to Amazon 343

12.4.1LINQ to Amazon介绍 344

12.4.2需求 345

12.4.3实现 346

12.5IQueryable和IQueryProvider:LINQ to Amazon高级版本 352

12.5.1IQueryable和IQueryProvider接口 353

12.5.2实现 356

12.5.3究竟发生了什么 357

12.6小结 358

第13章 应用程序各层中的LINQ 359

13.1LinqBooks应用程序概览 359

13.1.1功能 359

13.1.2程序UI概览 360

13.1.3数据模型 362

13.2LINQ to SQL及数据访问层 362

13.2.1回顾传统的三层架构 362

13.2.2用专门的数据访问层还是LINQ to SQL 364

13.2.3LinqBooks中对LINQ to SQL的使用 368

13.3LINQ to XML的使用 374

13.3.1从Amazon中导入数据 374

13.3.2生成RSS 376

13.4LINQ to DataSet的使用 377

13.5使用LINQ to Objects 380

13.6可扩展性 380

13.6.1自定义查询操作符 380

13.6.2创建并使用自定义LINQ提供器 381

13.7展望未来 381

13.7.1自定义LINQ功能 382

13.7.2LINQ to XSD:强类型的LINQto XML 382

13.7.3PLINQ:支持并行计算的LINQ 383

13.7.4LINQ to Entities,ADO.NET Entity Framework的LINQ接口 383

13.8小结 384

第14章 使用LINQ操作DataSet 385

14.1LINQ to DataSet概览 385

14.2DataSet回顾 386

14.2.1DataSet使用场景及功能 386

14.2.2DataSet是什么 387

14.2.3Visual Studio 2008和.NET 3.5为支持LINQ to DataSet进行的改进 389

14.3查询弱类型DataSet 390

14.3.1为DataSet加载数据 390

14.3.2不使用LINQ查询DataSet 394

14.3.3使用LINQ to DataSet查询弱类型DataSet 395

14.4查询强类型DataSet 399

14.4.1生成强类型的DataSet 400

14.4.2为强类型DataSet加载数据 402

14.4.3使用LINQ to DataSet查询强类型DataSet 404

14.5将LINQ to DataSet查询结果绑定至UI控件 406

14.5.1使用CopyToDataTable将LINQto DataSet查询结果复制到DataTable 406

14.5.2使用ASDataView实现双向数据绑定 408

14.6在LINQ to DataSet中使用查询操作符 410

14.6.1用于DataRow的Field<T>和SetField<T>操作符 410

14.6.2集合操作符以及用DataRowComparer比较DataRow 411

14.7小结 412

附录 标准查询操作符 414