Rah*_*ore 8 .net c# linq linq-to-entities entity-framework
我在我的网络应用程序中查询了一个有点大的表,我只想从表中返回N行.
我已经阅读了MSDN文档,但是如果Take()首先从数据库中提取所有记录,或者它的行为与SQL Server类似,我看不出它的状态TOP.
我担心是否Take()会提取所有记录,然后获得前N个记录或者它会按预期运行并直接检索N个记录
Nic*_*las 11
请参阅序列中的返回或跳过元素.
Take(N)将添加TOP N到您的SQL并仅检索N记录.
例如(使用我自己的SQL Server 2014和EF 6.1):
这个LINQ:
var query = await dbContext.Lookup
.Where(w => w.LookupCd == '1')
.Take(10)
.ToListAsync();
Run Code Online (Sandbox Code Playgroud)
生成这个SQL:
SELECT TOP (10)
[Extent1].[LookupId] AS [LookupId],
[Extent1].[LookupTypeId] AS [LookupTypeId],
[Extent1].[LookupCd] AS [LookupCd],
[Extent1].[LookupName] AS [LookupName],
[Extent1].[LookupDescription] AS [LookupDescription]
FROM [dbo].[Lookup] AS [Extent1]
WHERE '1' = [Extent1].[LookupCd]
Run Code Online (Sandbox Code Playgroud)
如果要确定LINQ正在生成哪种SQL,请使用SQL事件探查器(如果您使用的是SQL Server).对于您编写的任何LINQ,这始终是一个很好的做法.

| 归档时间: |
|
| 查看次数: |
9189 次 |
| 最近记录: |