0

このためのプロバイダーの実装はそれほど難しくありません。

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());
}

うまくいきません。

以前に作成したクエリのクエリ テキストを取得するにはどうすればよいですか?

4

1 に答える 1