有人知道为什么这两个查询结果的类型不同吗?
// q1 is IOrderedEnumerable<int>
var q1 = from c1 in new[] { 1, 2, 3 }
orderby c1
select c1;
// q2 is IEnumerable<int>
var q2 = from c1 in new[] { 1, 2, 3 }
from c2 in new[] { 1, 2, 3 }
where c1 == c2
orderby c1
select c1;
我无法理解为什么 q2 不是 也 是一个 IOrderedEnumerable<int>
。
使用 'join' 子句并没有什么区别:
// q3 is IEnumerable<int>
var q3 = from c1 in new[] { 1, 2, 3 }
join c2 in new[] { 1, 2, 3 }
on c1 equals c2
orderby c1
select c1;