How does method overload resolution work (LINQ Where extension method)?
If I have a variable of type IQueryable<T> I have four extension methods for Where in namespace Systm.Linq available: public static IQueryable<T> Where<T>(this IQueryable<T> source, Expression<Func<T, bool>> predicate); public static IQueryable<T> Where<T>(this IQueryable<T> source, Expression<Func<T, int, bool>> predicate); public static IEnumerable<T> Where<T>(this IEnumerable<T> source, Func<T, bool> predicate); public static IEnumerable<T> Where<T>(this IEnumerable<T> source, Func<T, int, bool> predicate); (The last two because IQueryable<T> inherits from IEnumerable<T> .) If I use a