У меня есть таблицы запросов, что имеет Сертификаты:EF запрос с использованием метода расширения внутри метода расширения
public class Request {
public virtual List<Approval> Approvals { get; set; }
}
Запросы поступают из БД
public DbSet<Request> Request { get; set; }
у меня есть метод расширения:
public static IQueryable<Request> HaveApprovals(this IQueryable<Request> requests) {
return requests.Where(r => r.ActiveApprovals().Count() > 0).ToList();
}
И еще один способ расширения:
public static IEnumerable<Approval> ActiveApprovals(this Request request) {
return request.Approvals.Where(a => !a.Deleted);
}
Но получить сообщение об ошибке:
LINQ to Entities does not recognize the method 'System.Collections.Generic.IEnumerable`1[Domain.Approval] ActiveApprovals(Domain.Request)' method, and this method cannot be translated into a store expression.
По какой-то причине один метод расширения способен перевести на LINQ, но при использовании метода расширения внутри другого, то он не может перевести. Какие-либо предложения?
Вы должны возвращать IQueryable со второго, а также –
Я бы мог, если бы мог, но 'request.Approvals' - это' List', а using Where возвращает 'IEnumerable'. – Jaanus