У меня есть следующий запрос в LINQ to Entities:
var query = from p in db.Products
where p.Price > 10M
select p;
На данный момент запрос не выполнен, и я хочу написать запрос, который будет вернуть true/false на основе некоторых условий:
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. Почему я не могу заменить встроенный код на такой делегат, и есть ли способ выполнить повторное использование другим способом?