C# LINQ to Objectsのインデックス付きメソッド
C# LINQのコレクション、ファイル、文字列などに関するインデックス付きメソッドの覚え書きです。
System.LINQ.Enumerable Classで、2番目以降の引数にFunc<TSource,Int32,...>が含まれるものはインデックス付き形式に対応しています。具体的には以下のメソッドが挙げられます。何れも拡張メソッドなので1番目の引数は呼び出したインスタンスが与えられます。
名前 | 概要 |
---|---|
Select | 変換 |
SelectMany | 多次元配列の変換 |
SkipWhile | 条件が成立する要素までスキップ |
TakeWhile | 条件が成立した要素からスキップ |
Where | 条件が成立する要素のみ抽出 |
SelectMany以外のサンプルコード
var x = new[]{0,1,2,3,4,5}; Console.WriteLine(string.Join(", ", x)); // 出力:0, 1, 2, 3, 4, 5 Console.WriteLine(string.Join(", ", x.Select((n, i) => (i, n)))); // 出力:(0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5) Console.WriteLine(string.Join(", ", x.SkipWhile((n, i) => i < 3))); // 出力:3, 4, 5 Console.WriteLine(string.Join(", ", x.TakeWhile((n, i) => i < 3))); // 出力:0, 1, 2 Console.WriteLine(string.Join(", ", x.Where((n, i) => i%2==0))); // 出力:0, 2, 4