2009-03-06 6 views
0

可読性を向上させるために、コードでLINQを真のクエリ言語として使用し始めています。最近まで、Entity FrameworkチームのLINQからSQLへのチーム移転のためにLINQに触れることを恐れていました(この会話をここで無視しようとしています)。LINQはクエリ言語を今後の安全な賭けにするでしょう動く産業)?LINQ(クエリ言語)のアップグレードパスについて心配する必要があります

答えて

5

"LINQ"と "特定のLINQプロバイダー"を区別することができます。私は、LINQ自体がここにあると言うことは安全だと思います。それはです。オブジェクトへのLINQ経由のインプロセスコレクション処理に便利です。

どのLINQプロバイダが「勝っているか」(もしあれば) - それは電話するのが難しいです。

確かにでもLINQ自体の基本を学べます.LINQ to XMLも素敵なXML APIです。

+0

LINQは、ここに滞在していない場合、あなたはLINQの次の目的地:) – JaredPar

+0

優れたポイントで私を見つけることができ、私は彼らもする必要はありません条件 –

3

Jon氏によると、LINQプロバイダを区別することは非常に重要です。例えば

  • オブジェクトへのLINQ:これは、IEnumerableを<T>のオフに基づいていますので、私はそれが非常に難しい、これは
  • LINQ SQLにどこでも起こっている見つけるBCLに染み付いている:私は使用しませんこれはLINQとほぼ同じくらいですが、それには良いフォローがあり、人々はそれを気に入っているようです。

警告:私はLINQに取り組んでいましたので、ここでかなり偏っています。

私たちが本当に正しいと思っているところで、LINQについて本当に素敵なのは、誰でもLINQプロバイダを書くことができるということです。必要なのは、正しい名前のいくつかのバインド可能なメソッドです。突然クエリ構文があります。

var query = from it in someCollection select it.SomeProperty; 

この文は、3.5フレームワークを使用せずに書き込むことができます。 2.0フレームワークに対して動作し、コンパイラで使用されるクエリ構文と互換性があるmy own LINQ Providerがあります。

私は個人的にラムダ/拡張メソッドsynatxにもっと傾いていますが、実際には結果のコードに違いはありません。

+0

続くforループよりも読み、それは非常に良くを発見しましたもちろん、あなたが正しいインスタンスメソッド(またはあなたが本当に奇妙な場合は静的メソッド)を持つ型を使用すると、クエリ式は*まだ*動作します... –

+0

@Jon、ありがとう!言及するのを忘れてしまった。投稿を更新しました – JaredPar

+0

@ Jared:いくつかの奇妙な例についてはhttp://msmvps.com/blogs/jon_skeet/archive/2008/02/29/odd-query-expressions.aspxをご覧ください。私は言語のコーナーを探検するのが好きです。あまりにも多くの探査が私の頭を傷つけるgenericsを除いて:) –

関連する問題