最終更新:2012-08-17 (金) 04:48:45 (4269d)  

LINQ
Top / LINQ

.NET統合言語クエリ Language Integrated Query

概要

利点

  • オブジェクト指向言語らしい書き方でデータベースへの問い合わせができます。
  • 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?

  • XMLに対する操作
  • 効率的で使いやすい、インメモリ XML 機能を使用して、ホスト プログラミング言語に XPath/XQuery 機能を提供します。
  • XElement?

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);

関連

参考