LINQは、.NET Framework 3.5から追加された統合言語クエリー(Language Integrated Query)です。C#やVisual Basicなどの.NET系のプログラム言語から利用可能で、開発環境はVisual Studio 2008から対応しています。Part2では、LINQの基本的な機能と利用方法を簡単なサンプルのコードを用いて解説していきます。

LINQ登場の背景と三つの問題点

図1●三つの問題点
図1●三つの問題点
[画像のクリックで拡大表示]

 プログラムがアクセスする対象のデータソースは、主にリレーショナルデータベースですが、他にも配列やコレクションクラス、XML、Webサービスなど数多く存在します。これらデータソースにアクセスするためには、クエリーを発行する、またはAPIを実行する、などの処理を施します。このデータソースへのアクセス方法について、三つの大きな問題が存在します(図1)。

問題1 クエリーが文字列である
 一般的なプログラム言語では、SQLのクエリーをプログラムの構文で表現できないため、専用のAPIにクエリーを文字列として渡す必要があります。クエリーの構文は厳密な型付けが行われていないため、コンパイラによるチェックが行われません。よって、その部分についてはコンパイル時にエラーが検出されず、生産性が悪くなってしまいます。

問題2 データソースへのアクセス方法が統一されていない
 様々なデータソースにアクセスするため、データソースごとにそれぞれ異なる方法を用いなくてはなりません。例えば、データベースの場合はSQL、コレクションクラスやXMLの場合は専用のAPIです。このように、アクセスする対象のデータソースによって、対応したクエリーやAPIを使い分けなければならないため、一貫したコードとなりません。

問題3 O/Rマッピングが必要
 オブジェクト指向言語は、クラスによる階層型の構造ですが、一般的に普及が進んでいるリレーショナルデータベースは、表による2次元のデータ構造です。このような不整合が存在するため、プログラムはデータベースから取得したデータをそのまま扱えません。この不整合を解決するために、データベースから取得したデータをクラスにマッピング(Object/Relational Mapping、O/Rマッピングと呼びます)しなければなりません。