■ Skip / Take
* Skip:先頭から指定された数の要素をスキップし、残りを返す * Take:先頭から指定された数の要素を返すhttp://d.hatena.ne.jp/chiheisen/20111031/1320068429
サンプル
private void button1_Click(object sender, EventArgs e) { var samples = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var skipNo = Convert.ToInt32(this.textBox1.Text); var takeNo = Convert.ToInt32(this.textBox2.Text); // Skipで要素を飛ばして、Takeで要素を取得 var results = samples.Skip(skipNo).Take(takeNo).ToArray(); string output = string.Empty; foreach (var result in results) { output = output + result.ToString() + " "; } this.label1.Text = output; }
■ SkipWhile / TakeWhile
* SkipWhile:先頭から指定された条件を満たさなくなるまで要素をスキップし、残りを返す * TakeWhile:先頭から指定された条件を満たす要素を返す # TakeWhile は使えそう!!!
サンプル
private void button1_Click(object sender, EventArgs e) { var samples = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var skipNo = Convert.ToInt32(this.textBox1.Text); var takeNo = Convert.ToInt32(this.textBox2.Text); // SkipWhileで要素をスキップし、TakeWhileで要素を取得 var results = samples.SkipWhile(x => x < skipNo).TakeWhile(y => y < takeNo).ToArray(); string output = string.Empty; foreach (var result in results) { output = output + result.ToString() + " "; } this.label1.Text = output; }
参考文献
http://dobon.net/vb/dotnet/programing/arrayslice.html#section4http://d.hatena.ne.jp/okazuki/20111113/1321191314
今後参考になりそうなサイト
http://keibalight.wordpress.com/2011/07/02/%E3%80%90linq%E3%80%91%E6%8C%87%E5%AE%9A%E3%81%AE%E8%A1%8C%E3%81%AE%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%8F%96%E5%BE%97%EF%BC%88%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%B3%E3%82%B0%EF%BC%89/
http://devadjust.exblog.jp/7103005/