我在LINQ到實體以下查詢:LINQ到實體不支持調用
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"));
這工作正常;但是,我想從我的代碼中獲得一些重用。我需要根據如果類別是飲料或其他過濾方法很多,所以我試圖創建一個委託:
Func<Product, bool> eligibleForDiscount = (product) => product.Category == "Beverage" || product.Category == "Other";
我想替代與委託的線上單向:
return query.Any(p => p.IsInStock && eligibleForDiscount(p));
這給了我一個錯誤,說LINQ to Entities不支持Invoke。爲什麼我不能用內聯代碼替代這樣的委託,並且有什麼方法可以通過其他方式實現我的重用?
可能重複://計算器。com/questions/8741667/the-linq-expression-node-type-invoke-is-not-supported-in-linq-to-entities-in-e) –
考慮到這個問題沒有被接受的答案,我沒有了解這個PredicateBuilder是什麼,我不認爲這個問題是重複的。 – Dismissile