【C#/LINQ】LINQの学習 その(2) クエリ式を使わないで書く

By | 2011年12月16日

LINQを特徴づけているクエリ式は、実はコンパイラによってメソッド呼び出し式に変換されるシンタックスシュガーに過ぎない。
初めてLINQのクエリ式を見ると、どうも慣れない感じがするのだがクエリ式を使わないで書いた場合と比較するとイメージしやすくなるのではないかと思う。
例えば、以下のようなクエリ式で書いたプログラムがあったとする。

Program.cs

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

namespace LinqLesson
{
    class Program
    {
        static void Main(string[] args)
        {
            var data = new[]
            {
                new{Name="Tom",Age=17},
                new{Name="Ken",Age=46},
                new{Name="Alice",Age=18},
                new{Name="Mike",Age=19},
                new{Name="John",Age=23},
                new{Name="Chris",Age=37},
                new{Name="Bob",Age=35},
            };
            
            var result =
                from person in data
                where 20 <= person.Age
                orderby person.Name
                select person;

            foreach (var person in result)
            {
                Console.WriteLine("Name:" + person.Name + " Age:" + person.Age);
            }        
        }
    }
}

このプログラムを実行すると

のように表示される。

さて、このプログラムをメソッド呼び出しで書いた場合、23-28行目のクエリ式の部分は

var result = data.Where(person => 20 <= person.Age)
                 .OrderBy(person => person.Name)
                 .Select(person => person);

のように書ける。
クエリ式で書いた場合と式の要素を比べてみよう。
上:クエリ式 下:メソッド呼び出し式

こうしてみると、慣れてしまえばクエリ式の方が簡潔に書け、読みやすいのではないかと思う。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です