什么是在C#2.0中将IEnumerable <foo>转换为List <foo>的快速方法?</foo> </foo>

时间:2009-11-18 19:31:34

标签: c# list .net-2.0 ienumerable

我们都知道缓慢的方式:

foreach..

3 个答案:

答案 0 :(得分:16)

List constructor is a good bet

IEnumerable<T> enumerable = ...;
List<T> list = new List<T>(enumerable);

答案 1 :(得分:5)

怎么样:

IEnumerable<T> sequence = GetSequenceFromSomewhere();
List<T> list = new List<T>(sequence);

请注意,这是针对序列恰好是IList<T>的情况进行了优化 - 然后使用IList<T>.CopyTo。在大多数情况下它仍然是O(n),但可能比迭代更快O(n):)(它还可以避免在创建它时进行任何大小调整。)

答案 2 :(得分:3)

您想在通用列表上使用.AddRange方法。

List<string> strings = new List<string>();
strings.AddRange(...);

..或构造函数..

new List<string>(...);