C# 3.0 を使ってみる

匿名型、クエリ式、オブジェクト初期化子

C# 3.0 で導入された「匿名型」、「クエリ式」、「オブジェクト初期化子」などを使った簡単なサンプルを書いてみた。

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

namespace linqTest1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Data> list = new List<Data>()
            {
                new Data() { FirstName = "test", LastName = "3", Point = 8 },
                new Data() { FirstName = "test", LastName = "1", Point = 10 },
                new Data() { FirstName = "test", LastName = "2", Point = 5 },
            };

            //Point の値が 7より大きいものを FirstName + LastName 順でソートし、
            //Name と Point プロパティを持つ匿名型のオブジェクトに格納
            var selectedList = from it in list
                               where it.Point > 7
                               orderby it.FirstName + it.LastName
                               select new { Name = it.FirstName + it.LastName, Point = it.Point };

            foreach (var data in selectedList)
            {
                Console.WriteLine("{0}, {1}", data.Name, data.Point);
            }

        }
    }

    class Data
    {
        private string firstName;
        private string lastName;
        private int point;

        public string FirstName
        {
            get
            {
                return this.firstName;
            }
            set
            {
                this.firstName = value;
            }
        }

        public string LastName
        {
            get
            {
                return this.lastName;
            }
            set
            {
                this.lastName = value;
            }
        }

        public int Point
        {
            get
            {
                return this.point;
            }
            set
            {
                this.point = value;
            }
        }
    }
}

実行結果

test1, 10
test3, 8