3

我有List<Mail> mails并且想要将前 100 个元素复制到一个新列表中,因为我想在数据网格中显示它们。但是mails可能包含超过 9000 个元素,所以如果我使用mails.

4

2 回答 2

6

LINQ Take()

var first100Mails = new List<Mail>(mails.Take(100));
于 2013-07-05T08:39:25.430 回答
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;

所以这将尽可能快。

于 2013-07-05T08:47:43.897 回答