string[] colors = { "green", "brown", "blue", "red" };

var query =
from c in colors
where c.Length > 3
orderby c.Length
select c;

what type is query?

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.