我有表的要求,具有認證:EF查詢
public class Request {
public virtual List<Approval> Approvals { get; set; }
}
請求來自DB
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',並使用Where返回'IEnumerable'。 – Jaanus