Ответ 1
Я предполагаю, что вы ищете аксессуар, который возвращает N-й элемент неупорядоченной коллекции, выполняя частичную сортировку в коллекции. Это, как правило, полезно, когда у вас очень большая коллекция и заинтересованы в одном из первых элементов, основанных на некотором предикате порядка.
Насколько мне известно, ни расширения BC BC, ни LINQ не имеют эквивалента. Все методы сортировки (включая Enumerable.OrderBy) выполняют полный порядок сбора.
Если вам нужна эффективная версия Nth, вам нужно свернуть свой собственный метод расширения на IEnumerable, чтобы сделать это. Если вы собираетесь бросить свой собственный, вы можете посмотреть в алгоритм быстрого выбора, который имеет производительность O (n).
Если версия грубой силы достаточно, вы можете использовать LINQ:
var someCollection = new []{ 5, 2, 8, 9, 0, 1, 3, 12, 4 };
var fifthItem = someCollection.NthItem(5);
public static class NthExtensions
{
public static T NthItem(this IEnumerable<T> coll, int n)
{
return coll.OrderBy(x => x).Skip(n - 1).First();
}
}