针对实体框架的多个左连接

时间:2010-02-07 00:19:29

标签: c# linq entity-framework

我一直在寻找,但无法找到解决方案......

以下是我的实体......

  • ContentPage(有很多ContentPageZones)
  • ContentPageZone(有一个内容)
  • 内容

我想通过ID查询ContentPage,并且我希望它包含所有相关的活动且至少有一个活动内容的ContentPageZones(两者都具有IsActive bool属性)。如果没有可用的ContentPageZones具有活动内容,我仍然希望ContentPage具有ContentPageZones的空列表。

建议?

1 个答案:

答案 0 :(得分:0)

在你的问题中,你说:

  

ContentPageZone(有一个内容)

这意味着ContentPageZone - >内容为1 .. [0,1]。

然后你说:

  

...所有相关的活动且至少有一个活动内容的ContentPageZones ......

这意味着ContentPageZone - >内容为1 .. *。

我认为第一个是正确的,但第二个查询会有所不同。

var q = from cp in Context.ContentPages
        where cp.ID == someId
        select new 
        {
            ID = cp.ID,
            Name = cp.Name,
            ContentPageZones = from cpz in cp.ContentPageZones
                               where cpz.Content.IsActive
                               select new 
                               {
                                   ID = cpz.ID,
                                   // etc.
                               }
        };