Linq и сортировка
От: Воронков Василий Россия  
Дата: 15.03.10 19:45
Оценка:
Есть такой код:


var list1 = new int[] {0, 1, 2, 3 };
var list2 = new string[] {"a", "b", "c", "d" };

var qry =
    from x in list1
    from y in list2
    select new { x, y };



В такой форме возвращает результат вида:


0 0 0 0
a b c d



Если поменять списки местами:


from y in list2
from x in list1
select new { x, y };



то получаем результат вида:


a a a a
0 1 2 3



Все логично. Добавляем сортировку:


from y in list2
from x in list1
orderby x descending, y descending
select new { x, y };



По логике вещей как она должна работать — на основе выражения orderby заполняется коллекция ключей, так? Потом по этой коллекции производится стабильная сортировка.
И вот тут я чего-то туплю.

Если переставлять списки местами, т.е. и так:


from y in list2
from x in list1
orderby x descending, y descending
select new { x, y };



и вот так:


from x in list1
from y in list2
orderby x descending, y descending
select new { x, y };



Результат всегда будет одинаковый. Но ведь коллекция ключей в обоих случаях должна формироваться разная.

Короче, почему это работает?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.