簡體   English   中英

如何計算元素直到找到N個好元素?

[英]how can I count elements till found N good elements?

我有一個集合。

我想從它預測只有前N個未被刪除。

但是我想計算我遍歷了多少元素(已刪除和未刪除),直到達到第N個未刪除的元素。

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

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

但是編譯器拒絕了。 而現在我發現它無論如何都沒有回答我的需要

TIA

這個怎么樣:

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

結果是N匿名對象的序列,其中x.Item是原始對象, x.Index是原始集合中的索引。 如果要從startIndex開始計算原始集合,只需交換SelectSkip調用。

然后,您可以獲得所需的數字:

var numberProcessed = selected.Last().Index + 1;

整個事情必須與linq一起嗎?

這是一個更安全的嘗試:)

List<thing> result = new List<thing>();
collection.ToList().ForEach(x => {
   if (!x.IsDeleted && i < N){
      result.Add(x);
      i++;
   }
});

這對我有用:

        IEnumerable<Thing> result = collectiom.TakeWhile((x, index) => {
            if (numNonDeleted == N)
                return false;
            if (!x.Deleted && ++numNonDeleted == N)
                numIveBeenThrough = index + 1;
            return true;
        }).Where(x => !x.Deleted).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM