将列表的n元素复制到新列表

时间:2013-07-05 08:38:16

标签: c# list datagrid copy

我有List<Mail> mails并希望将前100个元素复制到新列表,因为我想在数据网格中显示它们。但是mails可能包含超过9000个元素,因此如果我使用mails则会花费太长时间。

2 个答案:

答案 0 :(得分:6)

LINQ Take()

var first100Mails = new List<Mail>(mails.Take(100));

答案 1 :(得分:2)

对于List<T>,使用其内置List<T>.GetRange(int index, int count)

可能效率最高
var result = mails.GetRange(0, 100);

这可能比使用Linq更有效,因为List<>实现可以利用私有数据来优化它。

实现如下(来自Reflector):

List<T> list = new List<T>(count);
Array.Copy(this._items, index, list._items, 0x0, count);
list._size = count;
return list;

所以这将尽可能快。