なんとなく

なんとなく書きます

LINQのSkipとTakeについて

Skipはその名を通り指定の数だけ飛ばす。

Takeは指定の数だけ出力する。

2つを組み合わせると

範囲の指定ができる。

↓のように書くと

 Enumerable.Range(1, 100).Skip(10).Take(20)

で11~30を返す。

 

SkipWhileとTakeWhileはそれぞれ

Func<int,bool>とFunc<int,int,bool>のデリゲートを持つ。

Func<int,int,bool>は良くあるインデックス付きのやつのパターン

↑の11~30を返すのものを書く場合は

Func<int,bool>のときは

Enumerable.Range(1100).SkipWhile(i => i < 11).TakeWhile(i => i < 31)

 

Func<int,int,bool>のときは

Enumerable.Range(1100).SkipWhile((v,i) => i < 10).TakeWhile((v,i) => i < 20)

 

 のように書く。