連載:[完全版]究極のC#プログラミング

Chapter17 LINQ to SQL

川俣 晶
2010/04/14

17.5 LINQ to SQLとメソッド構文

 リスト17.1は、クエリ式を次のように書き直せば、メソッド構文になる

var query = db.PointList.Where((n) => n.point >= 80);

 当然ではあるが、このように書き直しても、結果は同じである。同じクエリが送信され、同じ結果になる。クエリ式はメソッド構文の糖衣構文だからである。メソッド構文で書くと、このラムダ式がローカルで実行されないことが直感的にわかりにくいかもしれないが、これも、式ツリー経由でSQL文に翻訳されるわけである。

 ちなみに、このWhereメソッドは、LINQ to Objectで使われたWhereメソッドとは別物のSystem.Linq.QueryableクラスのWhereメソッドである。このメソッドは次のシグネチャを持つ。第2引数の型がExpression型であることから、このメソッドが確かに「式ツリー」を受け取っていることがわかるだろう。

Where<TSource>(IQueryable<TSource>, Expression<Func<TSource, Boolean>>)
System.Linq.QueryableクラスのWhereメソッドのシグネチャ


 INDEX
  [完全版]究極のC#プログラミング
  Chapter17 LINQ to SQL
    1.17.1 効率的に列挙可能にするという問題
    2.17.2 SQL Serverのワナ
    3.17.3 LINQ to SQLという突破口
    4.17.4 LINQ to SQLのサンプル
  5.17.5 LINQ to SQLとメソッド構文
    6.17.6 LINQ to SQLのまとめ/練習問題
 
インデックス・ページヘ  「[完全版]究極のC#プログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間