Я пытаюсь разбить запросы linq на sql, чтобы сделать их немного более читабельными.
Скажем, я хочу вернуть все заказы на продукт, в котором в предыдущем году было более 100 заказов.У меня есть этот запрос:
from o in _context.Orders
where (from o1 in _context.Orders
where o1.Year == o.Year - 1 && o1.Product == o.Product
select o1).Count() > 100
select o;
То, что я хотел бы сделать, это поместить вложенный запрос в повторно используемую функцию:
private IQueryable<Order> LastSeasonOrders(Order order)
{
return (from o in _context.Orders
where o.Year == order.Year - 1 && o.Product == order.Product
select o);
}
, которая затем позволяет мне изменитьисходный запрос к:
from o in _context.Orders
where LastSeasonOrders(o).Count() > 100
select o;
Однако это не работает, за исключением того, что вызов метода не может быть переведен в SQL при выполнении запроса.
Любые краткие подсказки о правильностиспособ достичь этого?