public static IQueryable Select(this IQueryable source, LambdaExpression selector)
{
if (source == null) throw new ArgumentNullException(nameof(source));
if (selector == null) throw new ArgumentNullException(nameof(selector));
return source.Provider.CreateQuery(
Expression.Call(
typeof(Queryable), "Select",
new[] { source.ElementType, selector.Body.Type },
source.Expression, Expression.Quote(selector)));
}
}