tengo la siguiente consulta en LINQ a Entidades:LINQ a Entidades no admite invocación
var query = from p in db.Products
where p.Price > 10M
select p;
En este punto, la consulta no se ha ejecutado, y quiero escribir una consulta que devolverá verdadero/falso Based en algunas condiciones:
return query.Any(p => p.IsInStock &&
(p.Category == "Beverage" ||
p.Category == "Other"));
Esto funciona bien; Sin embargo, me gustaría obtener un poco de reutilización de mi código. Tengo muchos métodos que hay que filtrar en función de si la categoría es una bebida u otro, así que he intentado crear un delegado:
Func<Product, bool> eligibleForDiscount = (product) => product.Category == "Beverage" || product.Category == "Other";
quería sustituir el cheque en línea con el delegado:
return query.Any(p => p.IsInStock && eligibleForDiscount(p));
Esto me da un error al decir que LINQ to Entities no admite Invoke. ¿Por qué no puedo sustituir el código en línea por un delegado como este, y hay alguna forma en que pueda lograr mi reutilización de alguna otra manera?
posible duplicado de [El LINQ tipo de nodo expresión 'Invoke' no se admite en LINQ to Entities en marco de la entidad] (http: // stackoverflow .com/questions/8741667/the-linq-expression-node-type-invoke-is-not-supported-in-linq-to-entities-in-e) –
Teniendo en cuenta que la pregunta no tiene una respuesta aceptada y no tengo respuesta idea de lo que es PredicateBuilder, no considero que esta pregunta sea un duplicado. – Dismissile