LINQ to SQL 查询

更新:November 2007

定义 LINQ to SQL 查询所用的语法与在 LINQ 中使用的语法相同。唯一的差异是您的查询中引用的对象映射到数据库中的元素。有关更多信息,请参见 LINQ 查询介绍

LINQ to SQL 将您编写的查询转换成等效的 SQL 查询,然后将它们发送至服务器进行处理。更具体地说,您的应用程序使用 LINQ to SQL API 来请求查询执行。LINQ to SQL 提供程序随后会将查询转换成 SQL 文本,并委托 ADO 提供程序执行。ADO 提供程序将查询结果作为 DataReader 返回。LINQ to SQL 提供程序将 ADO 结果转换成用户对象的 IQueryable 集合。

下图描绘了此常规流程。

查询执行关系图

LINQ to SQL 查询

说明:

.NET Framework 内置类型中的大多数方法和运算符都能直接转换成 SQL。LINQ 无法转换的那些方法和运算符会产生运行时异常。有关更多信息,请参见 SQL-CLR 类型映射 (LINQ to SQL)

下表显示了 LINQ 与 LINQ to SQL 查询项之间的相似和不同之处。

LINQ 查询

LINQ to SQL 查询

保存查询的局部变量的返回类型(对于返回序列的查询而言)

泛型 IEnumerable

泛型 IQueryable

指定数据源

使用 From (Visual Basic) 或 from (C#) 子句

相同

筛选

使用 Where/where 子句

相同

分组

使用 Group…By/groupby 子句

相同

选择(投影)

使用 Select/select 子句

相同

延迟执行与立即执行

请参见 LINQ 查询介绍

相同

实现联接

使用 Join/join 子句

可以使用 Join/join 子句,但使用 AssociationAttribute 属性更有效。有关更多信息,请参见跨关系查询 (LINQ to SQL)

远程执行与本地执行

 

有关更多信息,请参见 远程查询执行与本地查询执行 (LINQ to SQL)

流式查询与缓存查询

在本地内存情况中不适用

 

请参见

概念

LINQ 查询介绍

基本查询操作 (LINQ)

查询操作中的类型关系 (LINQ)

其他资源

LINQ to SQL 中的查询概念