2010年3月3日水曜日

System.Collections.Generic Name SpaceのList Classをインスタンス化してlistを定義し、そのlistからLinq(Language Integrated Query)で要素を取得してlistの要素の順序を入れ替え、Linqの遅延実行の機能を確認したりLinqで取得したデータを配列に変換して遅延実行を回避したりしてみる。

using System;
using System.Collections.Generic;
using System.Linq;

class MainClass
{
    static void Main()
    {
        var list = new List<int>();

        for (int i = 0; i < 10; i++)
        {
            list.Add(i + 1);
        }

        var sample = from n in list select n;

        // 表示:1 2 3 4 5 6 7 8 9 10
        foreach (var n in sample)
        {
            Console.Write(n + " ");
        }
        Console.WriteLine();

        // listのindex1,2の要素を入れ替える
        var tmp = list[2];
        list[2] = list[1];
        list[1] = tmp;

        /* Linqの遅延実行の機能を確認
         * 表示:1 3 2 4 5 6 7 8 9 10 */
        foreach (var n in sample)
        {
            Console.Write(n + " ");
        }
        Console.WriteLine();

        /* 遅延実行を回避するために
         * 配列に変換 */
        sample.ToArray();

        // 遅延実行の影響を受けないことを確認
        var tmp1 = list[2];
        list[2] = list[1];
        list[1] = tmp1;

        // 表示:1 2 3 4 5 6 7 8 9 10
        foreach (var n in sample)
        {
            Console.Write(n + " ");
        }
        Console.WriteLine();
    }
}

0 コメント:

コメントを投稿