Ho la seguente query in LINQ to Entities:LINQ to Entities non supporta Invoke
var query = from p in db.Products
where p.Price > 10M
select p;
A questo punto la query non ha eseguito, e voglio scrivere una query che restituirà vero/falso Based in alcune condizioni:
return query.Any(p => p.IsInStock &&
(p.Category == "Beverage" ||
p.Category == "Other"));
Questo funziona correttamente; tuttavia, vorrei ottenere un po 'di riutilizzo dal mio codice. Ho molti metodi che devono filtrare in base a se la categoria è una bevanda o di un altro, così ho cercato di creare un delegato:
Func<Product, bool> eligibleForDiscount = (product) => product.Category == "Beverage" || product.Category == "Other";
ho voluto sostituire il controllo in linea con il delegato:
return query.Any(p => p.IsInStock && eligibleForDiscount(p));
Questo mi dà un errore dicendo che LINQ alle entità non supporta Invoke. Perché non posso sostituire il codice inline per un delegato come questo, e c'è un modo per completare il mio riutilizzo in un altro modo?
possibile duplicato del [Il LINQ tipo di nodo espressione 'invocare' non è supportato in LINQ to Entities in Entity Framework] (http: // StackOverflow .it/questions/8741667/the-linq-expression-node-type-invoke-is-not-support-in-linq-to-entities-in-e) –
Considerando che la domanda non ha una risposta accettata e non ho idea di cosa sia questo PredicateBuilder, non considero questa domanda un duplicato. – Dismissile