目 录
第Ⅰ部分 LINQ项目简介
第1章 LINQ项目 3
1.1 LINQ概述 7
1.2 标准查询操作符 10
1.3 LINQ to XML 概述 11
1.4 LINQ to SQL 概述 13
1.5 本章小结 15
第2章 Visual Studio 2008简介 16
2.1 Visual Studio 2008 16
2.2 语言相关的LINQ特性 20
2.2.1 查询表达式 20
2.2.2 隐式的类型化变量 21
2.2.3 匿名类型 21
2.2.4 对象和集合初始化器 22
2.2.5 扩展方法 24
2.2.6 Lambda表达式 27
2.3 本章小结 28
第3章 LINQ查询 29
3.1 LINQ查询简介 29
3.1.1 获取数据源 30
3.1.2 创建查询 31
3.1.3 执行查询 31
3.1.4 与SQL语法的比较 33
3.1.5 查询的概念 35
3.1.6 var与IEnumerable的比较 38
3.1.7 常见的查询术语 39
3.1.8 IQueryable和Iqueryable
(Of T)接口 40
3.2 查询语法和方法语法的区别 40
3.3 使用查询语法和方法语法 42
3.4 本章小结 48
第4章 LINQ标准查询操作符 49
4.1 概述 49
4.2 标准查询操作符 50
4.2.1 投影操作符 51
4.2.2 限制操作符 52
4.2.3 排序操作符 52
4.2.4 联接操作符 55
4.2.5 分组操作符 58
4.2.6 串联操作符 59
4.2.7 聚合操作符 59
4.2.8 集合操作符 63
4.2.9 生成操作符 66
4.2.10 转换操作符 69
4.2.11 元素操作符 73
4.2.12 相等操作符 77
4.2.13 量词操作符 78
4.2.14 分割操作符 80
4.3 使用查询操作符 83
4.4 本章小结 86
第Ⅱ部分 LINQ to XML
第5章 理解LINQ to XML 89
5.1 LINQ to XML概述 89
5.2 LINQ to XML编程基础 90
5.2.1 LINQ to XML类 90
5.2.2 XElement类 92
5.2.3 XAttribute类 96
5.2.4 XDocument类 98
5.3 LINQ to XML编程概念 100
5.3.1 处理已有的XML 100
5.3.2 使用LINQ to XML保存
XML 102
5.3.3 创建XML 103
5.3.4 遍历XML 104
5.3.5 操纵XML 105
5.3.6 处理属性 110
5.4 LINQ to XML与其他XML
技术的比较 113
5.4.1 LINQ to XML与DOM的
比较 113
5.4.2 LINQ to XML与
XmlReader的比较 113
5.4.3 LINQ to XML与XSLT的
比较 114
5.4.4 LINQ to XML与
MSXML的比较 114
5.5 本章小结 114
第6章 LINQ to XML编程 115
6.1 创建树 115
6.1.1 C#中树的创建 115
6.1.2 Visual Basic中树的创建 120
6.2 使用文本填充XML树 121
6.3 查询XML树 123
6.4 修改和重构XML树 129
6.5 序列化XML树 131
6.6 名称空间 133
6.7 本章小结 135
第7章 LINQ to XML和其他LINQ
数据模型 136
7.1 SQL to XML 136
7.2 XML to SQL 140
7.2.1 插入 140
7.2.2 更新 141
7.3 本章小结 143
第8章 LINQ to XML编程高级
主题 144
8.1 LINQ to XML函数构造 144
8.2 LINQ to XML批注 148
8.3 LINQ to XML轴 151
8.3.1 Ancestors 152
8.3.2 Descendants 153
8.3.3 AncestorsAndSelf 155
8.3.4 DescendantsAndSelf 155
8.3.5 ElementsAfterSelf和
ElementsBeforeSelf 156
8.4 LINQ to XML事件 158
8.4.1 Changing事件 158
8.4.2 Changed事件 160
8.5 流式处理XML文档 161
8.6 流式处理大型XML文档 167
8.7 本章小结 167
第9章 LINQ to XML和
Visual Basic .NET 169
9.1 创建XML 169
9.1.1 XML文本简介 169
9.1.2 表达式 172
9.1.3 嵌入查询 173
9.1.4 理解Visual Basic XML
文本中的空白 174
9.2 访问XML 175
9.3 加载XML 178
9.4 使用Parse方法操纵XML 179
9.5 Visual Basic下LINQ to
XML的示例 180
9.6 本章小结 184
第Ⅲ部分 LINQ to SQL
第10章 LINQ to SQL概述 187
10.1 理解LINQ to SQL 187
10.2 LINQ to SQL对象模型 189
10.3 基于属性的映射 189
10.3.1 使用Database属性 190
10.3.2 映射表 190
10.3.3 映射列 191
10.3.4 映射关系 193
10.3.5 映射存储过程 194
10.3.6 映射函数 195
10.3.7 使用Parameter属性 195
10.4 关系数据基础 196
10.4.1 主键 196
10.4.2 外键 198
10.5 本章小结 201
第11章 LINQ to SQL查询 202
11.1 查询的概念 202
11.2 DataContext 204
11.3 强类型的DataContext 205
11.4 数据操纵 206
11.4.1 插入 207
11.4.2 更新 209
11.4.3 删除 209
11.5 处理对象 210
11.5.1 插入 210
11.5.2 更新 211
11.5.3 删除 211
11.6 存储过程和用户自定义
函数 211
11.6.1 映射并调用存储过程 212
11.6.2 映射并调用用户自定义
函数 225
11.7 本章小结 228
第12章 高级查询概念 229
12.1 数据库关系 229
12.1.1 表示关系 229
12.1.2 查询 233
12.2 已编译查询 234
12.3 远程查询执行与本地查询
执行的比较 235
12.3.1 远程执行 235
12.3.2 本地执行 235
12.4 延迟数据加载与立即数据
加载的比较 236
12.4.1 DataShape类 237
12.4.2 关闭延迟加载 238
12.5 组合键 238
12.6 只读数据 239
12.7 本章小结 239
第13章 实体类 240
13.1 跟踪实体变更 240
13.2 提交实体类变更 241
13.3 并发变更和并发冲突 246
13.3.1 UpdateCheck特性 246
13.3.2 ConflictMode枚举 247
13.3.3 ChangeConflictException
类 247
13.3.4 RefreshMode枚举 247
13.4 使用事务 248
13.5 本章小结 251
第14章 LINQ to DataSet 252
14.1 LINQ to DataSet概述 252
14.2 创建LINQ to DataSet
项目 253
14.3 向DataSet中加载数据 254
14.4 LINQ to DataSet查询 255
14.4.1 单表查询 256
14.4.2 多表查询 257
14.4.3 类型化DataSet 259
14.5 数据绑定 260
14.6 比较DataRow 261
14.7 本章小结 264
第15章 LINQ to SQL高级论题 266
15.1 对象关系设计器 266
15.1.1 创建和打开
O/R Designer 266
15.1.2 创建/配置DataContext 267
15.1.3 为表/视图映射创建
实体类 269
15.1.4 存储过程和函数的
DataContext映射 270
15.1.5 通过调用存储过程实现
使用实体类保存数据 271
15.2 扩展O/R设计器生成的
代码 272
15.3 O/R设计器中类的复数 273
15.4 SQL Metal 274
15.5 外部映射 277
15.6 多层操作 280
15.7 N层最佳实践 281
15.7.1 乐观并发 281
15.7.2 插入/删除 282
15.7.3 N层示例 282
15.8 设计器示例 283
15.9 本章小结 287
第Ⅳ部分 附 录
附录A 案例分析 291
附录B LINQ to Entities: ADO.NET
Entity Framework 306
附录C LINQ to XSD 320
