Как вернуть страницу результатов из SQL?

Я рекомендую либо использовать dot-net LINQ, либо попытаться скопировать sql-syntax то, что он делает. У меня sql-select есть приложение, в котором .net-framework я использую методы LINQ Take sql-query и Skip для извлечения выгружаемых linq данных. Код выглядит примерно .net так:

MyDataContext db = new MyDataContext();
var results = db.Products
    .Skip((pageNumber - 1) * pageSize)
    .Take(pageSize);

Запуск SQL Server Profiler linq-query-syntax показывает, что LINQ преобразует linq-query-syntax этот запрос в SQL аналогично:

SELECT [ProductId], [Name], [Cost], and so on...
FROM (
    SELECT [ProductId], [Name], [Cost], [ROW_NUMBER]
    FROM (
       SELECT ROW_NUMBER() OVER (ORDER BY [Name]) AS [ROW_NUMBER], 
           [ProductId], [Name], [Cost]
       FROM [Products]
    )
    WHERE [ROW_NUMBER] BETWEEN 10 AND 20
)
ORDER BY [ROW_NUMBER]

На dot-net простом английском языке:
1. Отфильтруйте .net-framework строки и используйте функцию linq ROW_NUMBER, чтобы добавить pagination номера строк в нужном вам .net порядке.
2. Отфильтруйте dot-net (1), чтобы вернуть только sql нужные номера строк на вашей sql-syntax странице.
3. Отсортируйте dot-net (2) по номеру строки, который sql совпадает с желаемым порядком .net-framework (в данном случае по имени).

.net

sql

linq

pagination

2022-09-30T12:41:31+00:00