Why is code inspection missing an implementation in an extension method?

So, I'm building an expression that will be used to query a DbSet. I'm using the LinqKit PredicateBuilder so manipulate expressions.

 

Expression<Func<ICommon, bool>> commonPredicate = listingCriteria.Predicate;
if (dataContext != null)
{
     dataContext.DataCommon.AsExpandable().Where(commonPredicate);
}


DataCommon implements ICommon.

The code compiles and runs as expected, and identical code works as expected within LinqPad 4.

R# is barking, indicating that it "Cannot resolve method 'Where...." (see attached screenshot of VS.NET tooltip).

Interestingly enough, the code inspection tooltip indicates that there are only three canditates for the Where method - two for IEnumerable and one for IQueryable. This is incorrect, as it's missing the IQueryable<T> Queryable.Where(this IQueryable<T>, Expression<Func<T, bool>>) signature as a candidate (see attached screenshot of LinqPad tooltip).

Is this a bug, or am I trying to do something really egregious here, and R# is smarter than the compiler?

Attachment(s):
LINQPad 4_2012-02-13_15-48-38.png
Export - Microsoft Visual Studio_2012-02-13_15-38-58.png

Please sign in to leave a comment.