をサポートしていない私は、エンティティへのLINQで次のクエリを持っている:LINQは、Invoke
var query = from p in db.Products
where p.Price > 10M
select p;
この時点でクエリが実行されていない、と私はベースの真/偽を返しますクエリを書きたいです
return query.Any(p => p.IsInStock &&
(p.Category == "Beverage" ||
p.Category == "Other"));
これは問題なく動作します。しかし、私はコードからいくつかの再利用を取得したいと思います。
return query.Any(p => p.IsInStock && eligibleForDiscount(p));
:
Func<Product, bool> eligibleForDiscount = (product) => product.Category == "Beverage" || product.Category == "Other";
私は、デリゲートとインライン検査を代用したい:私はカテゴリが飲料またはその他の場合に基づいてフィルタリングする必要がある多くのメソッドを持っているので、私は、デリゲートを作成してみました
これはLINQ to EntitiesがInvokeをサポートしていないというエラーを表示します。なぜ私はこのようなデリゲートのインラインコードを置き換えることができないのですか?また、他の方法で再利用できる方法はありますか?
可能[LINQ式ノードタイプの「起動」は、エンティティフレームワークでエンティティへのLINQでサポートされていない](HTTPの複製:// stackoverflowの
は今、他の関数と同じようにそれを呼び出します。com/questions/8741667/the-linq-expression-node-type-invoke-is-in-lin-to-entities-in-e) –
この質問には受け入れられた回答がなく、このPredicateBuilderのアイデアは、私はこの質問を重複とはみなしません。 – Dismissile