Здравствуйте, i1yich, Вы писали:
I>>Можно ли в качестве keySelector при вызове IEnumerable.OrderBy использовать недетерминированную функцию, т.е. такую, которая не обязательно вернет один и тот же ключ, будучи вызвана дважды для одного элемента?
I>>С одной стороны, то, что OrderBy вычисляет и кеширует ключи элементов перед сортировкой — это вроде деталь реализации, но с другой — в документации к OrderBy на keySelector не налагается никаких требований, кроме того чтобы для возвращаемых значений ключа существовал Comparer<TKey>.Default.
I>Я к чему спрашиваю, вот например в задаче, когда нужно перечислить последовательность в случайном порядке, если полагаться на кеширование ключей, код будет выглядеть достаточно просто:
Порассуждайте сами: OrderBy вычитывает переданную последовательность в буфер, сортирует и возвращает. По другому она в принципе не может работать. Зачем вам использовать её для перемешивания элементов и задаваться непонятными вопросами, когда вам достаточно так же сомому вычитать последовательность с буфер, перемешать и возвратить перемешанное, не бребегая к OrderBy вовсе?
Help will always be given at Hogwarts to those who ask for it.