第1章 LINQ介绍 1
1.1 什么是LINQ 1
1.2 为什么要用LINQ 2
1.3 搭建LINQ开发环境 2
1.3.1 安装Visual Studio 2008 2
1.3.2 配置Visual Studio 2008 4
1.4 初识LINQ技术 5
1.4.1 初识LINQ to Objects 5
1.4.2 初识LINQ to ADO.NET 8
1.4.3 初识LINQ to XML 21
1.5 小结 26
第2章 C#语言的新特性及相关知识 27
2.1 .NET各个版本之间的关系 27
2.2 C#语言的新特性 28
2.2.1 自动属性和属性访问器的保护级别 28
2.2.2 可空类型 29
2.2.3 泛型 32
2.2.4 代理 35
2.2.5 迭代器与yield关键字 41
2.2.6 隐式类型的局部变量 44
2.2.7 对象和集合初始化器 45
2.2.8 匿名类型 49
2.2.9 扩展方法 51
2.2.10 匿名方法和Lamdba表达式 53
2.3 综合实例:C#高亮编辑及编译运行器 56
2.4 小结 64
第3章 LINQ基本子句介绍 65
3.1 概述 65
3.2 from子句 66
3.2.1 单个from子句 66
3.2.2 复合from子句 69
3.2.3 多个from子句 71
3.3 where子句 73
3.3.1 常见的where子句查询 73
3.3.2 在where子句中使用自定义函数 75
3.3.3 动态谓词的筛选 76
3.4 select子句 78
3.4.1 输出查询结果 78
3.4.2 对查询结果进行投影 78
3.5 group子句 80
3.5.1 lGrouping〈TKey,TElement〉泛型接口 80
3.5.2 分组查询 81
3.6 into子句 83
3.7 排序子句 86
3.7.1 OrderBy和OrderByDescending 86
3.7.2 ThenBy和ThenByDescending 87
3.8 let子句 90
3.9 join子句 91
3.10 小结 94
第4章 用于集合、文件、字符串对象的LINQ(LINQ to Objects) 95
4.1 LINQ标准查询运算符概述 95
4.2 Enumerable类的介绍 95
4.3 用于延期执行的Enumerable类方法成员 97
4.3.1 Take方法 98
4.3.2 TakeWhile方法 99
4.3.3 Skip方法 101
4.3.4 SkipWhile方法 103
4.3.5 Take、TakeWhile、Skip、SkipWhile小结 105
4.3.6 Reverse方法 107
4.3.7 Distinct方法 108
4.3.8 Union方法 111
4.3.9 Concat方法 113
4.3.10 Intersect方法 114
4.3.11 Except方法 116
4.3.12 Range方法 119
4.3.13 Repeat方法 120
4.3.14 Empty方法 121
4.3.15 DefaultIfEmpty方法 122
4.3.16 Cast方法 125
4.3.17 OfType方法 126
4.3.18 AsEnumerable方法 127
4.4 用于立即执行的Enumerable类方法成员 129
4.4.1 ToArray方法 129
4.4.2 ToList方.法 131
4.4.3 ToDictionary方法 132
4.4.4 ToLookup方法 140
4.4.5 SequenceEqual方法 150
4.4.6 First方法 153
4.4.7 FirstOrDefault方法 155
4.4.8 Last方法 157
4.4.9 LastOrDefault方法 159
4.4.10 Single方法 162
4.4.11 SingleOrDefault方法 164
4.4.12 ElementAt方法 167
4.4.13 ElementAtOrDefault方法 168
4.4.14 All方法 169
4.4.15 Any方法 170
4.4.16 Contains方法 173
4.4.17 Count方法 175
4.4.18 LongCount方法 177
4.4.19 Aggregate方法 179
4.4.20 Sum方.法 183
4.4.21 Average方法 186
4.4.22 Min方法 190
4.4.23 Max方法 194
4.5 综合实例 198
4.5.1 使用Ajax技术的ASP.NET项目:敏感词过滤 198
4.5.2 WinForm项目:文件查找和分组 202
4.6 小结 208
第5章 用于数据库访问的LINQ(LINQ to SQL) 209
5.1 LINQ to SQL概述 209
5.2 对象模型的建立 210
5.2.1 数据库对象的建立 211
5.2.2 使用Visual Studio 2008建立实体类 213
5.2.3 手动建立实体类 215
5.2.4 使用XML映射文件 221
5.3 用于数据库连接的DataContext对象的成员介绍 225
5.3.1 DataContext构造函数 225
5.3.2 CreateDatabase方法 227
5.3.3 DatabaseExists方法 229
5.3.4 DeleteDatabase方法 231
5.3.5 GetTable方法 232
5.3.6 SubmitChanges方法 234
5.3.7 GetChangeSet方法 235
5.3.8 Refresh方法 237
5.3.9 ExecuteQuery方法 240
5.3.10 ExecuteCommand方法 243
5.3.11 Translate方法 244
5.3.12 ChangeConicts属性 251
5.3.13 Transaction属性 251
5.3.14 ObjectTrackingEnabled属性 251
5.3.15 Log属性 252
5.4 用LINQ操作数据库单一表格 257
5.4.1 Table〈TEnti>类 257
5.4.2 Attach方法 257
5.4.3 AttachAll方法 264
5.4.4 GetOriginalEntityState方法 267
5.4.5 GetModifiedMembers方法 269
5.4.6 InsertOnSubmit方法 270
5.4.7 InsertAllOnSubmit方法 272
5.4.8 DeleteOnSubmit方法 274
5.4.9 DeleteAllOnSubmit方法 276
5.5 用LINQ操作数据库一对多表格 278
5.5.1 EntitySet〈TEntity〉类 278
5.5.2 Add方法 279
5.5.3 AddRange方法 282
5.5.4 Insert方法 284
5.5.5 Remove方法 285
5.5.6 RemoveAt方法 292
5.5.7 Clear方法 294
5.6 综合实例:客户产品订单处理系统 296
5.6.1 数据类 297
5.6.2 序列化与反序列化 299
5.6.3 控制器类 307
5.6.4 界面的数据绑定 310
5.7 小结 315
第6章 用于XML访问的LINQ(LINQ to XML) 317
6.1 LINQ to XML概述 317
6.2 LINQ to XML的基本操作 319
6.2.1 创建XML文档 319
6.2.2 创建XML元素 320
6.2.3 创建XML属性 321
6.2.4 创建XML注释 322
6.2.5 创建XML声明 323
6.2.6 创建XML文档类型 324
6.2.7 创建XML处理指令 325
6.2.8 创建XML CData数据 326
6.2.9 创建XML命名空间 327
6.3 使用轴方法处理XML元素 328
6.3.1 XElement类 328
6.3.2 检索元素的轴方法 331
6.3.3 添加元素的轴方法 339
6.3.4 删除元素的轴方法 340
6.3.5 替换元素的轴方法 342
6.3.6 根据指定的值自动添加、删除、修改子元素 345
6.3.7 获取元素属性的轴方法 346
6.3.8 替换元素属性的轴方法 349
6.3.9 删除元素的属性的轴方法 350
6.3.10 根据指定的值自动添加、删除、修改元素的属性 352
6.3.11 处理批注的轴方法 353
6.4 使用LINQ表达式处理XML元素 357
6.4.1 筛选XML元素 357
6.4.2 对XML元素进行排序 359
6.4.3 对XML元素进行计算 360
6.4.4 剔除XML树中符合条件的元素 363
6.4.5 变造XML树 365
6.5 使用LINQ to XML序列化XML树 369
6.5.1 输出XML树到字符串 369
6.5.2 输出XML树到TextWriter对象 371
6.5.3 输出XML树到文件 372
6.6 综合实例:生成并输出RSS聚合内容 373
6.6.1 数据类 375
6.6.2 建立RSS对象 376
6.6.3 控制器类 381
6.6.4 界面 382
6.6.5 运行结果 383
6.7 小结 385
第7章 综合应用实例:商品管理解决方案 386
7.1 概述 386
7.2 数据库设计 387
7.3 使用LINQ to SQL的数据层、商品管理模型 389
7.3.1 建立数据层 390
7.3.2 收银台及商店模型 396
7.4 WinForm项目 406
7.4.1 收银台界面自定义控件 406
7.4.2 控制台窗体 411
7.5 ASP.NET项目 418
7.5.1 自定义Web控件 418
7.5.2 商品查询、分页显示页面 419
7.5.3 Webservice数据耦合层 425
7.6 小结 427