Data Virtualization is a technique you use to expose a subset of the data from a large data collection so that only the actual data you need is fetched into memory. To implement data virtualization, you take your data collection which could contain any number of rows – even a million rows or more! – and you create a custom class for your virtualized data collection that implements IList and acts as a facade to the underlying data collection.
IList has a great many methods, but fortunately the only methods you have to implement are:
public int Count
T IList<T>.this[int index]
Note: This interface is an abstraction that allows list types to be used with through a single reference type. With it, we can create a single method to receive an int[] or a List.