(使用实体框架)
当我写:
IEnumerable<string> q = customers /*EF entity*/
.Select (c => c.Name.ToUpper())
.OrderBy (n => n)
c# 编译器知道如何生成表达式树,然后 sql 执行:
SELECT UPPER (Name) FROM Customer ORDER BY UPPER (Name)
还要注意该order by
条款
但
我看到了这个链接 :
他写了 :
IEnumerable<employee> emp =
dc.Employees.Where(x => x.Desc.StartsWith("soft"));
emp = emp.Take(1);
在调查了他看到的最终查询后:
SELECT [t0].[Id], [t0].[Name], [t0].[Address], [t0].[Desc] AS [Desc]
FROM [dbo].[Employee] AS [t0]
WHERE [t0].[Desc] LIKE @p0
注意没有 top
条款
这是为什么 ?
不Take(x)
应该添加到查询中?
会这样写:
IEnumerable<employee> emp =
(dc.Employees.Where(x => x.Desc.StartsWith("soft"))).Take(1);
将 TOP 子句添加到发送到 SQL 的查询中?
这是怎么回事?
(我已经知道这take
不是延期执行)