Как вернуть страницу результатов из SQL?
Я рекомендую либо использовать language-integrated-query LINQ, либо попытаться скопировать paginate то, что он делает. У меня language-integrated-query есть приложение, в котором linq я использую методы LINQ Take sql и Skip для извлечения выгружаемых dot-net данных. Код выглядит примерно linq-query-syntax так:
MyDataContext db = new MyDataContext();
var results = db.Products
.Skip((pageNumber - 1) * pageSize)
.Take(pageSize);
Запуск SQL Server Profiler paginate показывает, что LINQ преобразует paginate этот запрос в 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]
На paginate простом английском языке:
1. Отфильтруйте .net строки и используйте функцию sql-syntax ROW_NUMBER, чтобы добавить sql-select номера строк в нужном вам dot-net порядке.
2. Отфильтруйте linq-query-syntax (1), чтобы вернуть только linq-query-syntax нужные номера строк на вашей sql-query странице.
3. Отсортируйте .net (2) по номеру строки, который linq совпадает с желаемым порядком .net-framework (в данном случае по имени).
.net
sql
linq
pagination
Как вернуть страницу результатов из SQL?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.