0

有 Cars 实体集,每辆 Car 都有一组 AdvancedCode。最近我使用方法表示法从我的 EF 存储中选择层次结构。它看起来像这样:

repository.Cars.Where(a => a.AgentId == userAgent.AgentId)
      .Include(a => a.AdvancedCodes)
      .Where(a => a.CarId != null).ToList()

我收到了汽车的集合,每辆汽车都收集了 AdvancedCodes。太好了。现在我需要切换到 LINQ-to-Entities 表示法来执行多个 LEFT 连接和更复杂的 SELECT:

from cr in context.Cars
from ac in context.AdvancedCodes.Where(a => a.CarId == cr.CarId).DefaultIfEmpty()
from c in context.Contacts.Where(a => a.AdvancedCodeId == ac.AdvancedCodeId).DefaultIfEmpty()
from ag in context.Agents.Where(a => a.AgentId == ac.AdvancedCodeId).DefaultIfEmpty()
where ac.AgentId == agentId && ac.CarId != null && cr.IsApproved == true
select new CarCodeModel
{
     CarBrand = cr.CarBrand.BrandName,
     RegNumber = cr.RegNumber, 
     ContactDate = c.DateCreated,
     ContactCode = ac.Code,
     CodeCreationDate = ac.DateCreated,
     IsUsed = c.CoId != null,
     RecepientName = ag.AgentName
};

没关系,但这次我得到了一组平面 2D 数据,我需要以某种方式迭代并拆分两个相关的集合。有没有办法编写更复杂的查询来获得与 .Include 方法之后相同的两级集合集?

4

0 回答 0