 <p>The IQueryable Where takes an <code>Expression&lt;Func&lt;TSource, bool&gt;&gt;</code>, NOT a <code>Func&lt;TSource, bool&gt;</code>, so a different overload of Where is being called, causing the query to execute and the result to be returned as an IEnumerable instead of an IQueryable.</p> <pre><code>public static IQueryable&lt;TSource&gt; Where&lt;TSource&gt;( this IQueryable&lt;TSource&gt; source, Expression&lt;Func&lt;TSource, bool&gt;&gt; predicate ) </code></pre> <p>Pass your Func as an Expression and you should get the desired behavior.</p>