我试图转换旧查询以调整我的unitofwork存储库模式。
它不喜欢我的嵌套查询并生成An expression tree may not contain a call or invocation that uses optional arguments
原始查询
Clients = (from z in ctx.Interactions
where !z.Attendees
.Any(y => ctx.LoanParties
.Any(party => party.Person_Id == y.Person.Id &&
select z).Count();
工作单位查询
Clients = UnitOfWork.InteractionRepository.Get(
z => !z.Attendees.Any(
y =>
!(UnitOfWork.LoanPartyRepository.Get(
party =>
party.Person_Id == y.Person.Id).Any())))
.Select(z => z)
.AsParallel()
.Count();
Intellisense不喜欢嵌套的unitofwork查询末尾的.Any()
。请问用工作单元做嵌套查询的正确语法是什么?
答案 0 :(得分:1)
您可能只是缺少一些参考资料。
但是,如果要正确执行此操作,则应将整个逻辑封装在存储库中(以便使用IQueryable而不是IEnumerable)。这样查询将由数据库处理并且将更快。它也可以重复使用。
InteractionRepository
创建其他方法,例如GetWithSpecificCondition