gpt4 book ai didi

c# - IEnumerable : Get all before the last that matches a predicate

转载 作者:行者123 更新时间:2023-11-30 18:54:35 24 4
gpt4 key购买 nike

我有一个 IEnumerable<int>像这样,只有更长的时间:

5, 0, 0, 0, 0, 4, 0, 0, 0, 2, 0, 6, 0, 0, 0, 0, 0

现在我想返回最后一个非零值之前的所有元素:

5, 0, 0, 0, 0, 4, 0, 0, 0, 2, 0

好像sequence.Last()在这里没有帮助,因为它返回最后一次出现,而不是最后一次出现的索引。

我本来想用

var lastIndex = sequence.LastIndex(x=>x!=0);
subsequence = sequence.Take(lastIndex);

这在一般情况下是可行的,但是 LastIndex不存在,或者

var last = sequence.Last(y=>y!=0);
subsequence = sequence.TakeWhile(x=>x!=last)

这适用于该示例,但不适用于可能存在重复的非零值的一般情况。

有什么想法吗?

最佳答案

你可以试试这个

var allDataBeforeLastNonZero= sequence.GetRange(0,sequence.FindLastIndex(x=>x!=0));

关于c# - IEnumerable : Get all before the last that matches a predicate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40802341/

24 4 0