从语法上 看,linq to object 和
linq to sql 语法是一样的。
但实现的机制是不一样的 。
expression 本质上是一个数据结构 。
两者的功能上区别:
IEnumerable 处理的 是 内存的数据 linq to object
Iqueryable 处理的是数据库的数据,(也是可以内存的)。 linq to sql
注:
二者本质的区别
Ieneumerable如果 查询数据的话,会获取数据库所有的数据,全部拿到内存中,然后在内存中筛选 。(对内存的要求很高)
iqueryable 是 在数据库查好了,才把我们需要的数据返回到内存里面。
1.用Iqueryable类型进行查询
Iqueryable 类型查询下的sql (有 where筛选语句)
SELECT
[Extent1].[CustomerId] AS [CustomerId],
[Extent1].[CustomerName] AS [CustomerName],
[Extent1].[Remark] AS [Remark],
[Extent1].[Age] AS [Age]
FROM [dbo].[Customer] AS [Extent1]
WHERE ([Extent1].[Age] > 20) AND (N'中山大学' = [Extent1].[Remark])
2.用IEnumerable类型进行查询
IEnumerable 类型下的查询sql (没有where 的筛选条件)
SELECT
[Extent1].[CustomerId] AS [CustomerId],
[Extent1].[CustomerName] AS [CustomerName],
[Extent1].[Remark] AS [Remark],
[Extent1].[Age] AS [Age]
FROM [dbo].[Customer] AS [Extent1]