开发者

Whats a quick way to convert an IEnumerable<Foo> to List<Foo> in C# 2.0?

开发者 https://www.devze.com 2022-12-12 09:29 出处:网络
we all know the slow way: foreach..开发者_Go百科 The List constructor is a good bet. IEnumerable<T> enumerable = ...;

we all know the slow way:

foreach..开发者_Go百科


The List constructor is a good bet.

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


How about:

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

Note that this is optimised for the situation where the sequence happens to be an IList<T> - it then uses IList<T>.CopyTo. It'll still be O(n) in most situations, but potentially a much faster O(n) than iterating :) (It also avoids any resizing as it creates it.)


You want to use the .AddRange method on generic List.

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

.. or the constructor ..

new List<string>(...);
0

精彩评论

暂无评论...
验证码 换一张
取 消