連載:[完全版]究極のC#プログラミングChapter15 LINQとクエリ式川俣 晶2010/03/17 |
|
|
15.2 LINQとは何か?
「LINQ」とはC# 3.0の目玉機能の1つである。日本語では「統合言語クエリ」と書き、「Language-Integrated Query」の略である。その名のとおり、“クエリ”が“言語”に“統合”されるわけである。
従来、次のように文字列として書いていたクエリは、言語に統合されていたとはいえない。たとえば、クエリの構文が誤っていても、C#コンパイラはそれを検出できないからである。C#コンパイラから見れば、それは単なる文字列だからである。
|
そして、このように文字列で記述されたクエリの誤りは、実行時に初めてエラーとして検出されることになる。たとえば実行して数時間後に初めて実行されるクエリであれば、その数時間を待たなければクエリの記述ミスは発見できないことになる。
しかし、言語にクエリが統合されると、次のようなクエリを記述できる。
|
この場合、selectはC#言語仕様を構成するキーワードなので、つづりを間違えればコンパイラが検出してくれる。実行するまでもなく、コンパイル時にわかるのである。
いや、それどころか、単純な間違いはVisual StudioのIDEが検出してくれるので、コンパイルという手順すら必要なく、つづりを間違えて打ち終わった瞬間にわかってしまうこともあるだろう。その結果、単純なクエリの書き間違いが、間違った直後に修正されてしまうかもしれない。
このような機能がもたらす生産性の向上は、絶大である。データベースを扱うプログラマーであれば、積極的にLINQを活用していくべきだろう。
……という以上の話はウソではないが、典型的なLINQの誤解の一種といえる。LINQの本質は、データベースのクエリを言語レベルで書けることにはないし(次章の「メソッド構文」を見ればそれがわかる)、実行しなくてもクエリの記述ミスを検出できることにもない(それはそれで有益ではあるが)。
それよりも、もっと大きな別の「何か」を得るために、LINQは存在しているのである。データベースアプリケーションに浸ったC#プログラマーはもちろんだが、データベースは関係ないと思っているそこの君にも大いに関係がある。なにしろ、本章に出てくるクエリ式のサンプルで、データベースにクエリするものは1つもないぐらいである。
「[完全版]究極のC#プログラミング」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|