Хотя я уверен, что ключи были неупорядочены при возврате из метода Linq ToLookup, сохранен ли порядок значений? Я не могу найти документацию, которая говорит так или иначе.
Сохранять порядок значений с помощью linq и ToLookup()
Ответ 1
Текущая реализация ToLookup() действительно сохраняет порядок значений (проверьте реализацию Lookup<TKey,TElement>.Grouping<TKey,TElement>.Add()), но я не верю, что это будет гарантировано. Чтобы гарантировать заказ, лучше всего включить исходный индекс элемента, возможно, используя Select с перегрузкой индексов, а затем снова отсортировать.
Ответ 2
Я думаю, что они есть, посмотрите здесь. ILookup получен из IEnumerable<IGrouping<TKey, TElement>>. Я верю, что ценности гарантированно будут в порядке.