gpt4 book ai didi

c# - 如何使用 LINQ 获取序列中除最后一个元素之外的所有元素?

转载 作者:IT王子 更新时间:2023-10-29 03:34:04 24 4
gpt4 key购买 nike

假设我有一个序列。

IEnumerable<int> sequence = GetSequenceFromExpensiveSource();
// sequence now contains: 0,1,2,3,...,999999,1000000

获取序列并不便宜,而且是动态生成的,我只想遍历一次。

我想得到 0 - 999999(即除最后一个元素以外的所有元素)

我知道我可以做类似的事情:

sequence.Take(sequence.Count() - 1);

但这会导致对大序列进行两次枚举。

是否有一个 LINQ 结构可以让我这样做:

sequence.TakeAllButTheLastElement();

最佳答案

Enumerable.SkipLast(IEnumerable<TSource>, Int32) .NET Standard 2.1 中添加了方法。它完全符合您的要求。

IEnumerable<int> sequence = GetSequenceFromExpensiveSource();

var allExceptLast = sequence.SkipLast(1);

来自 https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.skiplast

Returns a new enumerable collection that contains the elements from source with the last count elements of the source collection omitted.

关于c# - 如何使用 LINQ 获取序列中除最后一个元素之外的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1779129/

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