我有一个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)
这适用于该示例,但不适用于可能存在重复的非零值的一般情况。
有任何想法吗?