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(1, 100).SkipWhile(i => i < 11).TakeWhile(i => i < 31)
Func<int,int,bool>のときは
Enumerable.Range(1, 100).SkipWhile((v,i) => i < 10).TakeWhile((v,i) => i < 20)
のように書く。