int がソース要素のインデックスを表すと思われる 2 つの引数を持つ述語を受け入れる Where メソッドのこのオーバーロードに関する MSDN ドキュメントの意味がわかりません。次の項目より先を見ることはできず、ましてやインデックスを作成することはできません)。
誰かがこのオーバーロードの使用方法と、特に Func の int の目的と使用方法を説明できますか?
int がソース要素のインデックスを表すと思われる 2 つの引数を持つ述語を受け入れる Where メソッドのこのオーバーロードに関する MSDN ドキュメントの意味がわかりません。次の項目より先を見ることはできず、ましてやインデックスを作成することはできません)。
誰かがこのオーバーロードの使用方法と、特に Func の int の目的と使用方法を説明できますか?
パラメータは、現在の反復int
内の現在のアイテムのインデックスを表します。LINQ 拡張メソッドの 1 つを呼び出すたびに、理論的には項目が同じ順序で返されるとは限りませんが、すべての項目が 1 回ずつ返されるため、インデックスを割り当てることができることがわかっています。(まあ、クエリ オブジェクトが などであることがわかっている場合は保証されますが、一般的にはそうではありません。)List<T>
例:
var result1 = myEnumerable.Where((item, index) => index < 4);
var result2 = myEnumerable.Take(4);
// result1 and result2 are equivalent.
配列と同じ方法でインデックスを作成することはできませんIEnumerable<T>
が、インデックスを使用して何らかの方法でリストをフィルター処理したり、条件で使用される別のコレクションの一部のデータにインデックスを付けたりできる場合があります。
編集:例として、使用できる他のすべての要素をスキップするには:
var results = sequence.Where((item, idx) => idx % 2 == 0);