LINQ to SQL 查询

定义 LINQ to SQL 查询所用的语法与在 LINQ 中使用的语法相同。 唯一的差异是您的查询中引用的对象映射到数据库中的元素。 有关详细信息,请参阅 LINQ 查询简介 (C#)

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

注意

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

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

LINQ 查询 LINQ to SQL 查询
保存查询的局部变量的返回类型(对于返回序列的查询而言) 泛型 IEnumerable 泛型 IQueryable
指定数据源 使用 From (Visual Basic) 或 from (C#) 子句 相同
筛选 使用 Where/where 子句 相同
分组 使用 Group…By/groupby 子句 相同
选择(投影) 使用 Select/select 子句 相同
延迟执行与立即执行 请参阅 LINQ 查询 (C#) 简介 相同
实现联接 使用 Join/join 子句 可以使用 Join/join 子句,但使用 AssociationAttribute 特性更有效。 有关详细信息,请参阅跨关系查询
远程执行与本地执行 有关详细信息,请参阅远程执行与本地执行
流式查询与缓存查询 在本地内存情况中不适用

请参阅