我发现有好几次有人问同样的问题,但似乎答案从来都不是令人满意的,尽管它应该很容易(理论上)。这是我的问题:
我有一个名为“Company”的实体,其中有一个 entityCollection“Employees”(一对多)。我需要检索所有公司,对于每个公司,我只想要年龄大于 21 的员工。
我试过了 :
Return context.Companies.Include("Employees").Where(c => c.Employees.Where(e => e.Age > 21).Count() > 0)
这不起作用,因为如果至少有一个高于 21 的人,它会给我每家公司的所有员工(它实际上与 .Any() 相同)
我试过了 :
Return context.Companies.Include("Employees").Select(c => New Company {
.Id = c.Id,
.Employees = c.Employees.Where(Function(e) e.Age > 24)
}).ToList()
这也不起作用(尽管它本来是完美的),它给了我以下错误:无法在 LINQ to Entities 查询中构造实体或复杂类型“MyModel.Company”。
你怎么能选择我所有的公司,每个公司的员工都在 21 岁以上?目前,我选择了所有,在客户端,我过滤了我的员工,但我不喜欢那个解决方案。
有谁能够帮我 ?
谢谢Morteza Manavi-Parast,它将完成工作!
尽管如此,我很难说服自己在唯一查询中这样做并没有在实体框架中实现。这是一个相对普遍的情况......作为证明,这个论坛上有很多像我这样的问题。
我很惊讶......也许下一个版本?
需要明确的是,我需要一个公司列表,因为我将查询结果直接绑定到数据网格。供您参考,当我单击数据网格的一行(因此选择一家公司)时,我有第二个网格,其中填充了来自 entityCollection 的员工(21 岁以上)。