The compiler translates this query to:
IEnumerable query = colors
.Where (c => c.Length > 3)
.OrderBy (c => c.Length);
The Where and OrderBy methods, in this case, resolve to Enumerable.Where and Enumerable.OrderBy, which both return IEnumerable. T is inferred to be string because we haven't transformed or projected the input sequence elements in any way.