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);
のように書ける。
クエリ式で書いた場合と式の要素を比べてみよう。
上:クエリ式 下:メソッド呼び出し式
こうしてみると、慣れてしまえばクエリ式の方が簡潔に書け、読みやすいのではないかと思う。