3


0

動的linqを作りたい。

しかし、テーブルを動的に設定したい(from節)

これは可能ですか?

マルコム

3 Answer


1


いつものように、それは依存します;-p

LINQ拡張メソッドまたはクエリ構文を使用する場合、いいえ:これは、「+ IQueryable 」と密結合します。「 T +」はソースタイプです。 シナリオによっては、ジェネリックが選択肢になる場合があります。

public IQueryable Get(int id) where T : SomeBaseClass
{
    return GetData().Where(row=>row.SomeProp == id);
}

たとえば、 + GetTable()+(および特別に作成されたデータオブジェクト)を使用して、上記をLINQ-to-SQLで動作させることができます。 もちろん、文字列からジェネリックに到達するには、リフレクション( + MakeGenericMethod +)を使用する必要があります-簡単ではありません!

あなたはここで正確なシナリオを明確にすることができますか?

それは_あなたはここで普通のコマンドを使うべきだと思うかもしれません… たとえば、おそらくhttp://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.executequery.aspx[ExecuteQuery]で、これは文字列コマンドを受け取り、データを型指定されたオブジェクトにロードします。


0


私はあなたがSQLの世界から新たにやってくる可能性があると思います、そしてそうです、そしてそう、あなたがしたい最初のことは文字列からクエリを構築することです(私もそうしたかったです)。 しかし、Linqでは、文字列を意識することはあまり望まないので、文字列名の代わりに何らかの種類のテーブルをクエリに送信できる場合は、Linqを使用するとよいでしょう。 それはお互いに有利な状況です:)

そうです、なぜあなたは本当に文字列としてテーブル名が欲しいのか、いくつかの例を挙げてください:)


0


LINKはSQLではありません。

もちろん、LINQ-to-SQLを使ってSQL Serverデータベースからデータを取り出すためにそれを使うことができますが、LINQとSQLは2つの非常に異なるものです。

多くの場合、それらの使用パターンは似ていますが、LINQの利点は実行時チェックの代わりにコンパイル時の型チェックと推論を持つことです。 SQLではそれができません。