我有List<Mail> mails
并且想要将前 100 个元素复制到一个新列表中,因为我想在数据网格中显示它们。但是mails
可能包含超过 9000 个元素,所以如果我使用mails
.
问问题
1074 次
2 回答
6
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 回答