В .Net есть много способов сделать это. Мне нравится использовать DataReader, который может возвращать несколько наборов записей. Вы можете перебирать его записи, используя While DataReader.Read.
Одним из преимуществ использования DataReader является то, что он предназначен только для пересылки и только для чтения, поэтому он быстрый и легкий.
Чтобы позволить пользователю перемещаться по всем записям по одной, вы не хотите держать DataReader открытым, пока пользователь выполняет навигацию. Вы можете читать записи DataReader в объекты. Или вы можете извлечь записи в DataSet и отображать DataRows из DataTable по одному.
Я бы посоветовал вам, если возможно, получить все записи сразу, если их не слишком много. Это сохранит повторные вызовы в базу данных.
С другой стороны, если записей много, вы можете получить первые несколько (скажем, 10 или 20) и получить следующий набор записей только с помощью нового вызова базы данных, если пользователь щелкает за пределами исходного набора , Это ленивая загрузка.