Почему IOrderedEnumerable не сохраняет порядок после фильтрации
Я создал упрощение вопроса. У меня есть заказанный IEnumerable, мне интересно, почему применение фильтра where может изменить порядок объектов
Это не компилируется, в то время как это должно иметь потенциал для
IOrderedEnumerable<int> tmp = new List<int>().OrderBy(x => x);
//Error Cannot Implicitly conver IEnumerable<int> To IOrderedEnumerable<int>
tmp = tmp.Where(x => x > 1);
Я понимаю, что не будет гарантированного порядка выполнения, если он поступит из IQueryable, такого как использование linq для какого-либо провайдера БД.
Тем не менее, при работе с Linq To Object, какой senario может произойти, что приведет к неупорядоченности ваших объектов, или почему это не реализовано?
РЕДАКТИРОВАТЬ
Я понимаю, как правильно заказать это не вопрос. Мой вопрос - это скорее вопрос дизайна. Фильтр Где на linq для объектов должен перечислять перечислимые и применять фильтрацию. Так почему же мы можем вернуть только IEnumerable вместо IOrderedEnumerable?
РЕДАКТИРОВАТЬ
Уточнить сенарио, когда это будет полезно. Я строю запросы на основе условий в моем коде, я хочу использовать как можно больше кода. У меня есть функция, которая возвращает OrderedEnumerable, однако после применения дополнительного, где мне придется изменить порядок, даже если бы он был в исходном упорядоченном состоянии