我有List<Mail> mails
并希望将前100个元素复制到新列表,因为我想在数据网格中显示它们。但是mails
可能包含超过9000个元素,因此如果我使用mails
则会花费太长时间。
答案 0 :(得分:6)
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;
所以这将尽可能快。