LINQ

LINQ (C# によるプログラミング入門)
http://ufcpp.net/study/csharp/sp3_linq.html
概要、LINQとは、LINQの全体像、クエリ式

IEnumeable を実装するコレクションクラスに対するもの(LINQ to Object)や、 XML に対するもの(LINQ to XML)、 それに、リレーショナルデータベースサーバに対する SQL クエリを生成するもの(LINQ to SQL)などがあります

それまでは、画像や音声などを含めた多種多様なデータへの問い合わせをしようとすると、SQLOOP言語だけでは簡単に実現できなかった。
そこで、データベース問い合わせとOOP言語を統合した(Language Integrated Query)。
C#VB.NET 内に SQL 風のクエリ式を記述できるような言語構文。


select, from, where, order by


LINQの全体像
http://ufcpp.net/study/csharp/fig/linq01.png


クエリ式

var list1 =
  from p in list
  where p.id <= 15
  orderby p.id
  select new { p.FamilyName, p.FirstName };

コンパイラはこうしたクエリ式を拡張メソッド(List, Whereメソッドなど)の呼び出しに変換する。
コンパイラはList, Whereなどのメソッドを実装してるかだけを見る。インターフェースを実装してるかは見ない(ダックタイピング)。