《LINQ编程技术内幕》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)基默著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2009
  • ISBN:9787111267591
  • 页数:414 页
图书介绍:本书结合C# 3.0和Visual Studio 2008对LINQ进行了实操型讲解。本书介绍了LINQ编程的各个方面,展示了LINQ是如何帮你显著提高生产效率的,还告诉了你应当如何用LINQ创建具有更高可靠性和可维护性的应用程序。本书首先介绍了LINQ所用到的最新的C#编程技术,比如匿名类型、分部方法以及Lambda表达式等。

第一部分 为LINQ作准备 1

第1章 使用匿名类型 1

1.1 理解匿名类型 2

1.2 使用匿名类型 3

1.2.1 定义简单匿名类型 3

1.2.2 使用数组初始化器语法 4

1.2.3 创建复合匿名类型 4

1.2.4 在for语句中使用匿名类型索引 7

1.2.5 匿名类型和using语句 9

1.2.6 从函数返回匿名类型 11

1.3 匿名类型的数据绑定 12

1.4 测试匿名类型的相等性 17

1.5 通过LINQ查询使用匿名类型 17

1.6 泛型匿名方法简介 18

1.6.1 使用匿名泛型方法 20

1.6.2 实现内嵌的递归 20

1.7 小结 21

第2章 使用复合类型初始化 22

2.1 通过命名类型初始化对象 22

2.1.1 实现能够通过命名类型进行复合类型初始化的类 24

2.1.2 理解自动实现属性 26

2.2 初始化匿名类型 26

2.3 初始化集合 28

2.3.1 完成Hypergraph 29

2.3.2 使用观察者模式实现Hypergraph控制器 37

2.4 使用转换运算符 41

2.4.1 ToArray 41

2.4.2 OfType 44

2.4.3 Cast 44

2.4.4 AsEnumerable 45

2.4.5 ToList 46

2.4.6 ToDictionary 46

2.4.7 ToLookup 47

2.5 小结 49

第3章 定义扩展方法和分部方法 50

3.1 扩展方法及其使用规则 50

3.2 定义扩展方法 52

3.2.1 实现扩展方法 52

3.2.2 重载扩展方法 55

3.2.3 定义泛型扩展方法 56

3.3 扩展方法是如何支持LINQ的 60

3.4 实现一个“会说话的”字符串扩展方法 64

3.5 定义分部方法 66

3.6 小结 69

第4章 yield return:使用.NET的状态机生成器 70

4.1 理解yield return的工作方式 70

4.2 使用yield return和yield break 72

4.2.1 测试代码性能 77

4.2.2 使用yield break 78

4.3 小结 78

第5章 理解Lambda表达式和闭包 79

5.1 了解由函数指针到Lambda表达式的演化过程 79

5.2 编写基本的Lambda表达式 83

5.2.1 自动属性 83

5.2.2 阅读Lambda表达式 84

5.2.3 Lambda表达式用作泛型活动 85

5.2.4 搜索字符串 87

5.2.5 Lambda表达式用作泛型谓词 88

5.2.6 将Lambda表达式绑定到控件事件 90

5.3 利用Lambda表达式进行动态编程 90

5.3.1 使用Select〈T〉和Lambda表达式 91

5.3.2 使用Where〈T〉和Lambda表达式 92

5.3.3 使用OrderBy〈T〉和Lambda表达式 93

5.3.4 将Lambda表达式编译为代码或数据 94

5.4 Lambda表达式和闭包 97

5.5 柯里化 98

5.6 小结 99

第6章 使用标准查询运算符 101

6.1 了解LINQ是如何实现的 101

6.2 构造一个LINQ查询 101

6.3 筛选信息 102

6.4 使用限定符 103

6.5 利用Skip和Take实现分区操作 105

6.6 使用生成运算 106

6.6.1 DefaultIfEmpty 106

6.6.2 Empty 106

6.6.3 Range 106

6.6.4 Repeat 107

6.7 相等性测试 108

6.8 从序列中获取特定元素 109

6.9 通过Concat串联序列 110

6.10 小结 111

第二部分 针对对象的LINQ第7章 对查询进行排序和分组 113

7.1 对信息进行排序 113

7.1.1 按升序和降序排序 113

7.1.2 直接使用扩展方法执行降序排列 116

7.1.3 执行次要排序 117

7.1.4 翻转元素顺序 119

7.2 对信息进行分组 120

7.3 小结 124

第8章 执行聚合运算 125

8.1 聚合 125

8.2 求集合平均值 127

8.3 元素计数 130

8.4 找出最小和最大的元素 130

8.5 计算查询结果的总计 134

8.6 中位数:实现一个自定义聚合运算 135

8.7 小结 136

第9章 执行集合运算 137

9.1 找出非重复元素 137

9.2 通过Intersect和Except定义集合 145

9.3 使用Union创建复合结果集 150

9.4 小结 151

第10章 掌握Select和SelectMany 152

10.1 探究Select 152

10.1.1 带有函数调用功能的选择 152

10.1.2 使用Select谓词 156

10.1.3 从数据访问层返回自定义业务对象 156

10.1.4 使用Select的索引打乱数组 160

10.1.5 构造21点扑克牌游戏的基础功能 161

10.1.6 从计算所得的值上投影出新类型 165

10.1.7 引入DLL 165

10.1.8 同时使用GDI+和Windows API(或外部DLL)方法 166

10.1.9 使用Select将单词的首字母改为大写 166

10.2 从多个源中投影出新类型 167

10.3 使用SelectMany从多个序列中创建出一个新序列 169

10.4 在SelectMany中使用索引 171

10.5 小结 172

第11章 联接查询结果 173

11.1 使用多个from子句 173

11.2 定义内联接 174

11.3 使用自定义(或非等式)联接 176

11.3.1 实现非等式自定义联接 176

11.3.2 实现带有多个谓词的自定义联接 179

11.3.3 实现带有临时范围变量的自定义联接 180

11.4 实现分组联接和左外联接 184

11.4.1 定义分组联接 184

11.4.2 实现左外联接 186

11.5 实现交叉联接 188

11.6 在组合键上定义联接 195

11.7 小结 196

第12章 查询Outlook和活动目录 197

12.1 LINQ to Outlook 197

12.2 通过纯C#代码查询活动目录 200

12.3 LINQ to Active Directory 201

12.3.1 创建IQueryable LINQProvider 202

12.3.2 实现IQueryProvider 203

12.3.3 将活动目录定义为数据源 204

12.3.4 将LINQ查询转换成活动目录查询 207

12.3.5 实现辅助标签 212

12.3.6 定义活动目录架构实体 214

12.4 通过LINQ查询活动目录 215

12.5 小结 217

第三部分 针对数据的LINQ第13章 使用LINQ查询关系型数据 219

13.1 定义表对象 219

13.1.1 将类映射到表 222

13.1.2 查看由LINQ生成的查询文本 226

13.2 通过DataContext对象连接关系型数据 228

13.3 查询数据集 230

13.3.1 从DataTable中获取数据 231

13.3.2 查询DataTable时使用Where子句 232

13.3.3 使用分区方法 233

13.3.4 在DataTable上进行排序 234

13.3.5 在DataSet上定义联接 234

13.4 SqlMetal:使用实体类生成工具 236

13.5 使用LINQ to SQL类设计器 236

13.6 小结 238

第14章 创建更好的实体以及映射继承和聚合 239

14.1 使用可空类型定义更好的实体 239

14.2 为LINQ to SQL映射继承层次结构 243

14.2.1 使用LINQ to SQL设计器创建继承映射 246

14.2.2 使用LINQ to SQL设计器修改现有类 247

14.3 将EntitySet类添加为属性 249

14.4 使用LINQ to SQL创建数据库 253

14.5 小结 255

第15章 通过LINQ查询关联数据库表 256

15.1 通过LINQ to DataSet定义联接 256

15.1.1 编写等式联接 256

15.1.2 编写不等式联接 258

15.1.3 定义左外联接以及右外联接简介 259

15.1.4 思考右联接 261

15.2 通过LINQ to SQL定义联接 262

15.2.1 编写等式联接 263

15.2.2 实现分组连接 266

15.2.3 实现左联接 276

15.3 使用LINQ查询视图 284

15.3.1 构建SQL Server中的视图 284

15.3.2 使用LINQ to SQL查询视图 285

15.4 使用LINQ to DataSet进行数据绑定 288

15.5 小结 290

第16章 更新匿名关系型数据 291

16.1 添加和移除数据 291

16.1.1 通过LINQ to SQL插入数据 291

16.1.2 通过LINQ to SQL删除数据 293

16.1.3 通过LINQ to SQL更新数据 295

16.1.4 使用存储过程 296

16.2 调用用户自定义函数 303

16.3 使用事务 306

16.4 理解冲突解决 308

16.4.1 为SubmitChanges指明冲突处理模式 308

16.4.2 捕获并解决并发冲突 310

16.5 N层应用程序与LINQ to SQL 314

16.6 小结 319

第17章 ADO.NET 3.0与Entity Framework简介 320

17.1 理解问题和解决方案的一般性本质 320

17.1.1 理解跟C#程序员有关的关系型数据库模型的问题 321

17.1.2 理解Entity Framework是如何解决这个问题的 321

17.1.3 理解解决方案的本质 322

17.2 寻找附加资源 322

17.2.1 Wikipedia 323

17.2.2 Entity SQL Blog 323

17.2.3 下载并安装Entity Framework 323

17.2.4 下载范例 324

17.2.5 关注时事新闻 324

17.3 通过普通的ADO.NET编程构建一个简单的应用程序 324

17.3.1 定义一个用以保存股票报价的数据库 325

17.3.2 添加一个用于插入报价信息的存储过程 326

17.3.3 添加一个外键 328

17.3.4 参考:完整的示例数据库脚本 329

17.3.5 编写代码以获取股票报价并更新数据库 332

17.4 使用Entity Framework进行编程 335

17.4.1 创建实体数据模型 335

17.4.2 添加一个关联 336

17.4.3 使用Entity SQL查询实体数据模型 336

17.4.4 使用LINQ to Entities查询实体数据模型 339

17.5 使用LINQ完成所有事情 340

17.6 小结 343

第四部分 针对XML的LINQ 345

第18章 从XML中提取数据 345

18.1 加载XML文档 345

18.2 查询XML文档 346

18.2.1 使用XDocument 346

18.2.2 使用XElement 349

18.2.3 管理属性 350

18.3 从字符串中加载XML 352

18.4 处理缺失的数据 353

18.5 使用查询表达式和XML数据 355

18.5.1 使用命名空间 355

18.5.2 嵌套查询 356

18.5.3 使用Where子句进行筛选 357

18.5.4 根据上下文查找元素 358

18.5.5 对XML查询进行排序 359

18.5.6 通过let计算中间值 360

18.6 批注节点 361

18.7 小结 362

第19章 比较LINQ to XML与其他XML技术 363

19.1 比较LINQ to XML和XPath 363

19.1.1 使用命名空间 364

19.1.2 查找子元素 366

19.1.3 查找兄弟元素 367

19.1.4 过滤元素 367

19.2 比较LINQ to XML转换和XSLT 368

19.3 通过函数构造来转换XML数据 375

19.4 小结 376

第20章 从非XML数据构造XML 377

20.1 从CSV文件构造XML 377

20.2 从XML生成文本文件 380

20.3 使用XML和嵌入式LINQ表达式(VB) 381

20.4 小结 384

第21章 使用XmlWriter生成XML 386

21.1 快速浏览XmlWriter 387

21.2 使用XmlTextWriter编写XML文件 387

21.3 小结 389

第22章 将XML与其他数据模型相结合 390

22.1 从SQL数据创建XML 390

22.1.1 定义对象关系映射 391

22.1.2 从SQL数据构造XML文档 392

22.1.3 使用XComment节点类型 395

22.1.4 在TreeView中显示XML文档 395

22.2 从XML更新SQL数据 398

22.3 小结 402

第23章 LINQ to XSD支持类型化XML编程 403

23.1 理解LINQ to XSD的基本设计目标 403

23.2 使用LINQ to XSD进行编程 404

23.2.1 下载并安装LINQ to XSD Preview 404

23.2.2 创建LINQ to XSD Preview Console Application 405

23.2.3 定义XML内容 405

23.2.4 定义XML Schema文件 407

23.2.5 向架构文件添加正则表达式 408

23.2.6 使用LINQ to XML for Objects进行查询 412

23.3 小结 414