統合言語クエリ

統合言語クエリ (Language INtegrated Query; LINQ, リンクと発音する) とは、.NET Framework 3.5において、様々な種類のデータ集合に対して標準化された方法でデータを問い合わせること（クエリ）を可能にするために、言語に統合された機能のことである。開発ツールはVisual Studio 2008から対応している。
統合言語問合せという表記も見られる。
例.
C#による例を示す。このコードでは、codice_1の中から"m"で始まるものを取り出し、それをcodice_2に格納し、それをforeach文で順に出力している（実際にはcodice_2は遅延評価される）。
using System;
using System.Linq; // LINQ拡張メソッドの利用に必要。メソッド構文ではなくクエリ構文を使用する場合でも必要となる。
public class Test
 public static void Main()
 string[] fruits =
 "apple",
 "cherry",
 "melon",
 "orange",
 "marron",
 "mango",
 // クエリ構文
 Console.WriteLine("Query Syntax");
 // fromからselectまでの一連の式がLINQクエリ式である。
 var ret = from x in fruits
 where !string.IsNullOrEmpty(x) && x[0] == 'm'
 select x;
 foreach (var e in ret)
 Console.WriteLine(e);
 // メソッド構文
 Console.WriteLine("Method Syntax");
 // オブジェクトをフィルタリングする条件（述語）を、ラムダ式で指定する。
 var ret = fruits.Where(x => !string.IsNullOrEmpty(x) && x[0] == 'm');
 foreach (var e in ret)
 Console.WriteLine(e);
言語仕様.
LINQに対応する言語は、LINQを自然に導入するための新しい言語仕様が併せて追加されている。代表的な例を以下に示す。
C#における仕様の詳細はC# 3.0からの仕様を参照されたい。
標準クエリ演算子.
主な標準クエリ演算子を挙げる。
データソース.
LINQはサードパーティによるものを含め、あらゆる種類のデータソースに対して適用することができる。これは、標準クエリ演算子に対応する機能を拡張メソッドとしてデータソースに追加することで実現している。
従来では同種のデータ型やオブジェクトの集合に対して列挙やソート、フィルタを効率的に扱うために配列 (Arrayクラス) やコレクションオブジェクトが用いられた。一方、データベースやXML上のデータ集合はADO.NETによってデータセットとして取り扱われており異なる操作が必要であった。LINQによって、これらのオブジェクトやデータセットを区別せず共通的に扱うことが可能となった。
例えば、マイクロソフトによるものでは次のような実装がある。
サードパーティ製データソースとしては、以下が挙げられる。
LINQに対応する言語.
次の言語がLINQに対応する。
C++/CLIはLINQに対応する予定はなく、従来通りの構文でLINQ関係のライブラリを使用できるのみである。
その他の言語での実装.
LINQは、LINQの思想に感化された人々により、マイクロソフト系のプログラミング言語にとどまらず、さまざまなプログラミング言語向けの実装が行われている。