C# 3.0 LINQ解説 1 - システム開発・導入全般 - 専門家プロファイル

上原 正吉
株式会社アースリンクネットワーク 
Webプロデューサー

注目の専門家コラムランキングRSS

対象:システム開発・導入

清水 圭一
清水 圭一
(IT経営コンサルタント)
井上 みやび子
井上 みやび子
(Webエンジニア)
清水 圭一
清水 圭一
(IT経営コンサルタント)

閲覧数順 2024年04月24日更新

専門家の皆様へ 専門家プロファイルでは、さまざまなジャンルの専門家を募集しています。
出展をご検討の方はお気軽にご請求ください。

C# 3.0 LINQ解説 1

- good

  1. 法人・ビジネス
  2. システム開発・導入
  3. システム開発・導入全般
C# .Net 開発 C# 3.0 言語解説

C# 3.0 LINQ解説 1



LINQといえば必ずと言っていいほど説明されている事項がある。
まずはそれらを解説していこう。

従来、SQL文を書く場合、以下のように文字列として書いていた
(パラメータークエリーなども結局SQLの部分は文字列である)

例として
string sqlSelectUser = "SELECT * FROM T_Users";


この構文は、単なる文字列であるためC#のコンパイラは
クエリの構文が誤っていても検出できない

実行時に初めてエラーがわかるという形である。
そのためエラーの検出が非常に難しく、
実際にそのクエリーを発行するテストを行わなければ、
単純な記述ミスでさえ発見が困難である。


しかし、言語にクエリが統合されると、以下のような書き方ができる。


var sqlSelectUser = from tempData in T_Users select tempData;

(tempDataは任意の変数名たとえば「t」だけとかも可能である)

列を選択したい場合は
var sqlSelectUser = from tempData in T_Users select tempData.Name, tempData.TEL;

と言うように記述することができる

ここで注目したいのは文字列を表す「"」がないということである。
つまりC#の式として認識されているということである、
そのためselect文の後のtempDataのあとで「.」を押せば
ちゃんとインテリセンスが働いてくれるのである。

また、C#の言語ということであるから、
当然文法ミスがあればコンパイルは通らない。
前述したケアレスミスを事前に発見できるのもメリットだ。


現時点では問題もある(2008年09月時点)




※更新系クエリ(INSERT/UPDATE/DELETE)がサポートされていない




※ペシミステック同時実行制御(悲観的同時実行制御)がサポートされていない



注釈
反対の意味としてオプティミスティック同時実行制御(楽観的同時実行制御)がある。ペシミステック同時実行制御の場合データーベースをロックするため更新処理は失敗しない。



だからといって、LINQを使用しないというのは早計である



LINQはそれを補って余りあるポテンシャルを秘めている。
次回からはそれを順番にみていこう。


QuickRec--メール・電話・FAXをお客様情報と一緒に全部まとめて一元管理
電話を自動録音することによりトラブルを未然に防ぎます
http://www.quickrec.com/

システム開発のご相談、ホームページ作成なら
アースリンクネットワークへ
http://www.eln.ne.jp