如何计算元素直到找到N个好元素?

Ela*_*nda 3 .net c# linq

我有一个集合.

我想从它预测只有前N个未被删除.

但是我想计算我遍历了多少元素(已删除和未删除),直到达到第N个未删除的元素.

我该怎么做?我想用副作用:

int i;
collectiom.Skip(Convert.ToInt32(startIndex))
            .TakeWhile( x=> 
{
++i != 0; 
return (!x.IsDeleted)
})
            .Take(N);
Run Code Online (Sandbox Code Playgroud)

但是编译器拒绝了.而现在我发现它无论如何都没有回答我的需要

TIA

And*_*per 5

这个怎么样:

var selected = collection.Select((x, i) => new {Item = x, Index = i})
                         .Skip(Convert.ToInt32(startIndex))  
                         .Where(x => !x.Item.IsDeleted)
                         .Take(N);
Run Code Online (Sandbox Code Playgroud)

结果是一系列N匿名对象,其中x.Item是原始对象,并且x.Index是原始集合中的索引.如果你想从startIndex交换SelectSkip调用开始计算原始集合.

然后,您可以获得所需的数字:

var numberProcessed = selected.Last().Index + 1;
Run Code Online (Sandbox Code Playgroud)