【C#】Linqメソッド 要素を取り出す ~ Skip / Take編 ~

■ 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;
}