Как объяснили здесь другие, вам нужны Take () и Skip ().
Они прервут набор результатов, чтобы получить нужную вам страницу.
Вы должны каким-то образом поддерживать информацию PageIndex и PageSize, чтобы вы могли передавать их при выполнении запроса.
Если ваш доступ к данным осуществляется, например, через веб-службу, вы передадите индекс / размер в то же время, что и критерии фильтрации, сохраняя эти значения в своем клиенте (приложении или странице, если это веб-сайт).
Не существует "итератора с отслеживанием состояния" из коробки, если это то, что вы ищете ...
Более того, если вы реализуете конструкцию «стандартного пейджинга», вам нужно будет получить общее количество записей перед ограничением вашего запроса, что вы можете сделать так, предполагая, что ваша функция получает PageSize и PageIndex в качестве параметров каким-либо образом:
var query = ...your normal query here...
int totalRecordCount = query.Count();
var pagedQuery = query.Skip(PageIndex*PageSize).Take(PageSize);