4

int がソース要素のインデックスを表すと思われる 2 つの引数を持つ述語を受け入れる Where メソッドのこのオーバーロードに関する MSDN ドキュメントの意味がわかりません。次の項目より先を見ることはできず、ましてやインデックスを作成することはできません)。

誰かがこのオーバーロードの使用方法と、特に Func の int の目的と使用方法を説明できますか?

4

2 に答える 2

6

パラメータは、現在の反復int内の現在のアイテムのインデックスを表します。LINQ 拡張メソッドの 1 つを呼び出すたびに、理論的には項目が同じ順序で返されるとは限りませんが、すべての項目が 1 回ずつ返されるため、インデックスを割り当てることができることがわかっています。(まあ、クエリ オブジェクトが などであることがわかっている場合は保証されますが、一般的にはそうではありません。)List<T>

例:

var result1 = myEnumerable.Where((item, index) => index < 4);
var result2 = myEnumerable.Take(4);
// result1 and result2 are equivalent.
于 2010-07-20T09:09:48.877 に答える
4

配列と同じ方法でインデックスを作成することはできませんIEnumerable<T>が、インデックスを使用して何らかの方法でリストをフィルター処理したり、条件で使用される別のコレクションの一部のデータにインデックスを付けたりできる場合があります。

編集:例として、使用できる他のすべての要素をスキップするには:

var results = sequence.Where((item, idx) => idx % 2 == 0);
于 2010-07-20T09:10:02.400 に答える