У меня сложилось впечатление (из сообщения Скотта Гути " LINQ to SQL (Part 9) "), что LinqDataSource обрабатывает для вас подкачку на уровне базы данных:
Одна из действительно интересных вещей, о которых следует упомянуть выше, - это то, что подкачка и сортировка по-прежнему работают с нашим GridView - даже если мы используем пользовательское событие Selecting для извлечения данных. Эта логика подкачки и сортировки происходит в базе данных - это означает, что мы извлекаем только 10 продуктов из базы данных, которые нам нужно отобразить для текущего индекса страницы в GridView (делая его суперэффективным).
(оригинальный акцент)
Если вы используете пользовательский пейджинг, вы можете сделать что-то подобное в LINQ to SQL:
var tagIds = (from t in Tags where tagList.Contains(t.TagText) select t.TagID).Skip(10).Take(10).ToList();
Это говорит LINQ занять 10 строк (эквивалент T-SQL "TOP 10") после пропуска первых 10 строк - очевидно, что эти значения могут быть динамическими, в зависимости от размера страницы и номера страницы, но вы получите идея.
В цитируемом посте также говорится об использовании пользовательского выражения с LinqDataSource.
Скотт имеет больше информации о Skip / Take in Часть 3 .