1

コンパイルされた LINQ to SQL クエリをリファクタリングすることは可能ですか? いくつかのロジックを含むクエリがあり、それに基づいて構築したいとします。そのクエリを再利用することは可能ですか?

たとえば、アクティブなアイテムを取得するための基本的なクエリがあるとします。

Func<DataContext, IQueryable<Item>> GetActiveItems =
    CompiledQuery.Compile((DataContext context) =>
        context.Items.Where(item => item.IsActive));

上記の式に基づいて、別のクエリを作成したいと思います。のドキュメントはCompiledQuery、コンパイルされたデリゲートの結果に別の演算子を適用できないことを示しています。では、そのような式をリファクタリングするための推奨される方法は何ですか?

を使うべきだと思いますExpressionが、どのように使えばいいのでしょうか? それとももっと良い方法がありますか?

4

1 に答える 1

1

PredicateBuilder のようなものを使用して、これを支援できます。

アルバハリのものはシンプルで非常にうまく機能しますが、独自に拡張または開発するのは簡単です: http://www.albahari.com/nutshell/predicatebuilder.aspx

明らかに、クエリが SQL 式に変換できないローカル メソッドに依存している場合は、その方法を再考する必要があります。

于 2010-12-30T09:48:35.327 に答える