Как насчет:
IEnumerable<T> sequence = GetSequenceFromSomewhere();
List<T> list = new List<T>(sequence);
Обратите внимание, что это оптимизировано для ситуации, когда последовательность оказывается IList<T>
- тогда она использует IList<T>.CopyTo
. В большинстве случаев он все равно будет O (n), но потенциально намного быстрее O (n), чем итерация :) (Это также позволяет избежать изменения размера при его создании.)