In C#, given that:
IEnumerable<T>
declaresWhere(Func<T, bool>)
IQueryable<T>
extendsIEnumerable<T>
IQueryable<T>
declaresWhere(Expression<Func<T, bool>>))
When using this:
var list = new List<int>();
var positives = list.AsQueryable().Where(x => x > 0);
How does the C# compiler distinguish between both methods?