質問

これは何とかプログラムでLINQの式ツリーにSQLクエリを変換することは可能ですか? SQLクエリは、このLINQクエリによって生成されることになっているので、私はT-SQL形式へのLINQクエリの貧乏人の直列化\デシリアライゼーションのようなものと考えています。

ありがとうございます。

役に立ちましたか?

解決

すべてはそれだけで仕事のトラック輸送を必要とし、可能です。問題は、あなたが最初のSQLクエリを解析し、LINQの式ツリーに変換するASTを解釈しなければならないということです。 SQLとの互換性1:LINQのは1ではないので、これは、些細なことではないSQLで、彼らは内部にいる間、たとえば、LINQで、GROUPBYの凝集体は、GROUPBYの外部にある:彼らは、同じスコープ内でなければなりませんGROUPBYとそうでない場合は動作しません。情報のこの種のは、SQLクエリにLINQクエリを変換するだけでなく、他の方法で回避のために必要とされています。

ストアクエリにだから、私は、例えば、別のルートを選んだと思います仕様パターン

他のヒント

私は、LINQツーSQLに組み込まれているものがあります信じていません。

理論的には私は(それがラウンドトリップ保証されませんが、同じクエリを表現する様々な方法があるので、)それは可能でしょうあえて言う - しかし、うまくやるのは非常に難しい。

おそらくあなたを助けることができるか

シング - LINQPad。私はそれがLINQクエリにSQLを変換することができない、と仮定し、それはSQLにLINQを翻訳することができます。

1つのオプションは、SQLから追跡するだろうILコードを生成しました。たとえばます:

SELECT TOP (50) [t0].[Id], [t0].[tralala]
FROM [pamparam] AS [t0]

を生成します:

IL_0001:  ldarg.0     
IL_0002:  call        LINQPad.User.TypedDataContext.get_pamparam
IL_0007:  ldc.i4.s    32 
IL_0009:  call        System.Linq.Queryable.Take
IL_000E:  call        LINQPad.Extensions.Dump

この方法で、それはLINQクエリは次のようになりますことを、非常に明白です。

pamparam.Take (50)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top