gpt4 book ai didi

c# - list.Take(100).ToList() 与 list.GetRange(0,100)

转载 作者:可可西里 更新时间:2023-11-01 08:52:07 25 4
gpt4 key购买 nike

List<AttendeeInfo> attendees = new List<AttendeeInfo>();
foreach ...
// Error: "There are too many target users in the email address array"
// for more than 100 attendees. So take the first 100 attendees only.
if(attendees.Count > 100) attendees = attendees.GetRange(0,100);
// or
if(attendees.Count > 100) attendees = attendees.Take(100).ToList();

由于我处理的列表总是长于 100,并且总是取前 100,所以最明显的差异(评估策略、跳过的可能性、引发错误)并不是很有趣。

但也许您可以阐明“在源列表中创建一系列元素的浅拷贝”到底是什么意思。这听起来真的很贵,比 Take 还贵,但是真的吗?

最佳答案

唯一的区别是 List.GetRangeTake(n).ToList() 更有效,因为它已经知道新列表的大小,而 LINQ 方法不知道它的大小。

所以 ToList枚举序列并使用加倍算法将项目添加到新列表中,连续增加后备数组。 List.GetRange 可以预先创建具有正确初始大小的适当列表,然后使用 Array.Copy将源列表的子集复制到新列表中 [ source ].

关于c# - list.Take(100).ToList() 与 list.GetRange(0,100),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32691250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com