 <p>You will have to parse the <a href="http://msdn.microsoft.com/en-us/library/system.linq.expressions.expression.aspx" rel="nofollow"><code>Expression</code></a> that is returned from the <a href="http://msdn.microsoft.com/en-us/library/system.linq.iqueryable.expression.aspx" rel="nofollow"><code>Expression</code> property</a> on the <a href="http://msdn.microsoft.com/en-us/library/bb351562.aspx" rel="nofollow"><code>IQueryable&lt;T&gt;</code></a> implementation.</p> <p>You'll have to query for the <a href="http://msdn.microsoft.com/en-us/library/system.linq.queryable.where.aspx" rel="nofollow"><code>Queryable.Where</code> method</a> being called as you crawl the <code>Expression</code> tree.</p> <p>Also note that while <code>Queryable.Where</code> is going to be the most common way to detect a <code>where</code> filter, query syntax allows for other implementations to be used (depending on what namespaces are used in the <a href="http://msdn.microsoft.com/en-us/library/sf0df423.aspx" rel="nofollow"><code>using</code> directives</a>); if you have something that is not using the <code>Queryable.Where</code> extension method then you'll have to look for that explicitly (or use a more generic method of filtering for a <code>Where</code> method that takes an <code>IQueryable&lt;T&gt;</code> and returns an <code>IQueryable&lt;T&gt;</code>).</p> <p>The <a href="http://msdn.microsoft.com/en-us/library/system.linq.expressions.expressionvisitor.aspx" rel="nofollow"><code>ExpressionVisitor</code> class</a> (as <a href="http://stackoverflow.com/questions/7902721/detect-where-applied-to-iqueryablet/7902840#7902840">pointed out by xanatos</a>) provides a very easy way of crawling the <code>Expression</code> tree, I highly recommend using that approach as a base for processing your <code>Expression</code> tree.</p> <p>Of note is that <code>ExpressionVisitor</code> class implementations are required to store and expose state on the class level. Because of that, it would be best (IMO) to create internal classes that perform the action one-time and then have a public method which creates a new instance of the <code>ExpressionVisitor</code> every time; this will help with dealing with mutating state, and if done properly, will allow the method to be thread-safe as well (if that is a concern of yours).</p>