2016-05-17 4 views
-3

私はこの機能を使用したことがありませんが、C#の新しいバージョンでは、LINQ lambdaの代替構文としてオブジェクトのコレクションに対してSQLのようなクエリを実行できるようになりました。文字列式からLINQクエリを実行できますか?

このようなクエリは、構成から読み込まれ、ハードコードされていない文字列としてエンコードされることができますか、それとも単にラムダ同等物にコンパイルされた別の構文ですか?

+1

http://stackoverflow.com/a/471592/8155 統合言語クエリのポイントは、離れて、文字列から移動すると、コンパイラがあなたの操作と種類をチェックできるようにすることです。 –

+0

これは可能ですが、 'Roslyn'のように、この文字列をコンパイルするためにカスタムコンパイラを使う必要があります。また、式を使って動的にクエリを構築することもできます。 – Fabjan

+0

通常のADO .NETコンポーネントでDBをクエリするのはなぜ簡単にできませんか? Linqは別のポアポウスのためです。 –

答えて

1

私はあなたが参照していると思いますが(もし私がいなければ私を許してください)、SQLのようなクエリはLINQに非常によく似ています。例えば

ラムダ構文:

var stuff = MyCollection.Where(x => x.Name == "Bouncy thing").Select(x => x.Name); 

クエリ構文:

var stuff = from x in MyCollection 
      where x.Name == "Bouncy thing" 
      select x.Name; 

上記の両方が同じを返すべきです。

これはあなたが後になったことですか、探しているものについていくつかの例がありますか?

これが実際には、あなたが探しているものがあれば、そうです。それは、ある程度、動的に作成することができます。私はこの記事をScott Guthrieが読んで読むことをお勧めします。古いものですが、まだメリットがあります。

http://weblogs.asp.net/scottgu/dynamic-linq-part-1-using-the-linq-dynamic-query-library

+0

はい、あなたは正しいです - それらが同じ基本機能の異なる形式であるかどうか、またはQuery構文ではなく文字列としてクエリを提供できるかどうかはわかりませんでしたコンパイル時の評価のために。私は前者だと思う。 –

+0

私は誰もがクエリー全体を遅く束縛していることを聞いたことがありません。それはLINQの考え方全体に反するものです。 – JaggenSWE

+0

意味があります - 私が質問したとき、私はこれが単なるLINQの代替構文であることを認識しませんでした。 –

関連する問題