Select is an extension method with the first param (IEnumerable<tsource> source) marked as "this";
IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector)
The way extension methods word is the object you enact them on is passed to the "this" param so you're right in that the method is actually called;
list.Select(list,s=>s.Name)
however .net passes the "list" object as the first param as that param is marked "this"
so this code here;
list.Select(s=>s.Name)
is compiled as
list.Select(list,s=>s.Name)
with the compiler passing the first param for you.