In the very first request, the actual work is not performed Select. Selectselects the current item in a sequence that is not an operator, so the call is Selectsimply skipped. If there is no call, it Select OrderByis the last call in the request and returns IOrderedEnumerable<T>.
( ) Select - . ( SelectMany IEnumerable , Join .) , Select Select IEnumerable<T>.
, , , :
var q1a = new[] { 1, 2, 3 }.OrderBy(c1 => c1);
var q2a = new[] { 1, 2, 3 }.SelectMany(c1 => new[] { 1, 2, 3 }.Select(c2 => new { c1, c2 }))
.Where(variables => variables.c1 == variables.c2)
.OrderBy(variables => variables.c1)
.Select(variables => variables.c1);
var q3a = new[] { 1, 2, 3 }.Join(new[] { 1, 2, 3 }, c1 => c1, c2 => c2, (c1, c2) => new { c1, c2 })
.OrderBy(variables => variables.c1)
.Select(variables => variables.c1);
, , , IOrderedEnumerable<int>.