Все запросы происходят при перечислении.
Быстродействие, Take должен быть в состоянии определить наиболее эффективный способ получить несколько предметов.
Это означает преобразование в оператор "TOP n" в Linq to SQL.
.
Мой результат от (q.Take(10)).ToString()
:
SELECT TOP (10) [t0].[UserID], [t0].[RoleID]
FROM [dbo].[UsersRoles] AS [t0]
.
И, результат от (q.Skip(10).Take(10)).ToString()
:
SELECT [t1].[UserID], [t1].[RoleID]
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY [t0].[UserID], [t0].[RoleID]) AS [ROW_NUMBER], [t0].[UserID], [t0].[RoleID]
FROM [dbo].[UsersRoles] AS [t0]
) AS [t1]
WHERE [t1].[ROW_NUMBER] BETWEEN @p0 + 1 AND @p0 + @p1
ORDER BY [t1].[ROW_NUMBER]