 <p>You get this as you cannot cast the IEnumerable to List (This is why LINQ has .ToList() extension). I think what you want is something like this:</p> <pre><code>public IEnumerable&lt;T&gt; Paginate&lt;T&gt;(IEnumerable&lt;T&gt; list) { return list.Skip(Page * PageSize).Take(PageSize); } </code></pre> <p>Which will work with any source that implements IEnumerable (List, T[], IQueryable)</p> <p>You can then call it like this:</p> <pre><code>IEnumerable&lt;int&gt; list = someQueryResult; IEnumerable&lt;int&gt; page = class.Paginate&lt;int&gt;(list); </code></pre> <p>As pointed out in other answers. IQueryable has it's own set of extension methods. So all though this will work, the paging will not be done as the data-source, as it will use the IEnumerable extensions</p>