Проверить, содержит ли IEnumerable меньше определенного количества элементов, не вызывая ненужных оценок?

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

public static bool IsWithinRange<T>(this IEnumerable<T> enumerable, int max)
{
    return enumerable.Count() <= max;
}

Хотя, насколько я понимаю, метод linq Count () будет оценивать все перечислимое перед возвратом результата. В идеале я бы вызвал оценку только по минимальному количеству элементов, чтобы получить свой результат.

Что было бы наилучшим способом гарантировать, что перечислимое число имеет меньше определенного количества элементов, не вызывая ненужных вычислений?

10
задан Luke Baulch 29 September 2011 в 02:46
поделиться