Вы можете использовать LINQ, например:
var customerPage = dataContext.Customers.Skip(50).Take(25);
, а затем отобразить эти 25 клиентов.
См. Отлично Скотта Гатри Использование LINQ-to-SQL - раздел 6 - получение продуктов с подкачкой на стороне сервера.
Другой вариант (в SQL Server 2005 и более поздних версиях) - использовать упорядоченные CTE (Common Table Expression) - что-то вроде этого:
WITH CustomerCTE AS
(
SELECT CustomerID,
ROW_NUMBER() OVER (ORDER BY CustomerID DESC) AS 'RowNum'
FROM Customers
)
SELECT * FROM CustomerCTE
WHERE rownum BETWEEN 150 AND 200
Вы в основном определяете CTE по своим критериям сортировки, используя функцию ROW_NUMBER
, и затем вы можете выбрать любое количество из них по своему желанию (здесь: между 150 и 200). Это очень эффективный и очень полезный пейджинг на стороне сервера. Присоединитесь к этому CTE со своими фактическими таблицами данных, и вы сможете получить все, что вам нужно!
Марк
PS: хорошо, так что у OP есть только SQL Server 2000, так что CTE не будет работать: - (
Если вы не можете выполнить обновление до SQL Server 2005 или .NET 3.5, я боюсь, что единственно возможный вариант - это хранимые процедуры. Вы можете сделать что-то вроде этого - см. Этот блог Эффективная и динамическая подкачка на стороне сервера с SQL Server 2000 , или Подкачка с использованием хранимых процедур SQL Server