Oh boy are you in for a roller coaster ride now!
Let me start with a question, How do you iterate through a large collection of data without loading the entire collection into memory?
The following scenario probably sounds quite familiar to you. You have a lot of data to present to the user. Rather than slapping all of the data onto a page, you display one page of data at a time.
One technique for this approach is to define an interface for paged collections like so...
/// <summary>
/// Base interface for paged collections.
/// </summary>
public interface IPagedCollection
{
///...