このためのプロバイダーの実装はそれほど難しくありません。
var query = from foo in someContext.Foos
where foo.Bar == "bar" && foo.Gaz > 4
select foo;
しかし、次のように 2 つの演算子をチェーンすると、次のようになります。
var chained1 = (from foo in someContext.Foos
where foo.Bar == "bar"
select foo)
.Where(f => f.Gaz > 4);
または私がこれをした場合:
var chained2 = chained1.Take(10);
これをどのように実装しますか?
で現在のメソッド呼び出しまたは演算子を評価するVisitMethodCall
際に、メソッド呼び出しが行われるインスタンス / オブジェクト / 式にアクセスします。そのVisitConstant
インスタンス式を評価/翻訳/書き直す必要があります。
次に、VisitConstant
これを行う場合:
if (typeof(IQueryable).IsAssignableFrom(node.Type))
{
_builder.Append((node.Value as IQueryable).ToString());
}
うまくいきません。
以前に作成したクエリのクエリ テキストを取得するにはどうすればよいですか?