最終更新:2012-08-17 (金) 04:48:45 (4535d)
LINQ
Top / LINQ
.NET統合言語クエリ Language Integrated Query
概要
- C♯ 3.0で追加。
- リレーショナルデータベースや XML に対する操作をプログラミング言語に統合するもの。
利点
- オブジェクト指向言語らしい書き方でデータベースへの問い合わせができます。
- in-memory なオブジェクト、XML、リレーショナルデータベースに対して、同じ文法でデータの問い合わせができます。
- 問い合わせ時に、コンパイラによる文法チェックや、IntelliSense のようなツールの補助を受けることができます
例
using System; using System.Linq; using System.Collections.Generic; class app { static void Main() { string[] names = { "Burke", "Connor", "Frank", "Everett", "Albert", "George", "Harris", "David" }; IEnumerable<string> query = from s in names where s.Length == 5 orderby s select s.ToUpper(); foreach (string item in query) Console.WriteLine(item); } }
種類
- LINQ を用いることで、様々なタイプのデータソースに対する検索や操作を、 共通の構文で行うことができます
LINQ to XML?
LINQ to DataSets?
LINQ to Objects?
- IEnumeable? を実装するコレクションクラスに対する操作
データベースに接続
LINQ to Entities
- .NET Framework 3.5より導入されたLINQ(言語統合クエリ)を、EDMに対して行う機能
- Entity SQL と呼ばれる SQL ライクなクエリ言語に変換されてから実行
LINQ to SQL
- LINQ テクノロジを使用して、メモリ内コレクションへのアクセスと同じように SQL データベースにアクセスできます。
- 式木?(Expression Trees)から Transact-SQL を生成
- 既存のRDBのデータベースに対して、それをオブジェクト経由でアクセスするレイヤを生成してくれる
- SQL Server
使い方
LINQ/クエリ式 (クエリ構文)
int[] numbers = { 5, 10, 8, 3, 6, 12}; //Query syntax: IEnumerable<int> numQuery1 = from num in numbers where num % 2 == 0 orderby num select num;
標準クエリ演算子 (メソッド構文)
int[] numbers = { 5, 10, 8, 3, 6, 12}; //Method syntax: IEnumerable<int> numQuery2 = numbers.Where(num => num % 2 == 0).OrderBy(n => n);