アイテムのリストがあり、そのリストから述語を満たす 3 つのアイテムを選択したいと考えています。
私はこれを試しました:(例)
list.Where(x => x == 2).Take(3)
list.Take(3).Where(x => x == 2)
しかしもちろん、それらは機能しません。
が満たされるまで、述語を満たす要素のみを選択するメカニズムはあり.Take(3)
ますか?
編集:最初の例の問題は、最初に一致するすべての要素を選択し、次に最初の 3 を取得することです。3 を取得するまで選択したいだけです。それは巨大なコレクションでのみ重要だと思いますが、それでも. というか、そのように理解しています。
これが起こります: (編集: 私はこれについて間違っていました)
[1, 2, 2, 2, 3, 4, 5, 2].Where(x => x == 2)
=> [2, 2, 2, 2].Take(3)
=>[2, 2, 2]
[1, 2, 2, 2, 3, 4, 5, 2].Where(x => x == 2, 3)
=>のようなものが必要です
[2, 2, 2]
。3 は、フィルタリングを停止する前に一致する要素の数です。