Linq EF使用.Include在表之间导航

Linq EF使用.Include在表之间导航,linq,entity-framework,Linq,Entity Framework,我想扩展这个查询 var itinerary = context.Itineraries .Include(i => i.ItineraryDays) .Include(i => i.ItineraryStartDates) .Where(i => i.Id == Id).FirstOrDefault(); 。。要包括3个表,这些表可通过使用以下导航属性遍历的“行程

我想扩展这个查询

        var itinerary = context.Itineraries
                .Include(i => i.ItineraryDays)
                .Include(i => i.ItineraryStartDates)
                .Where(i => i.Id == Id).FirstOrDefault();
。。要包括3个表,这些表可通过使用以下导航属性遍历的“行程日”访问

  • InventureDay>>公共虚拟列表{get;set;}(inventureDay.ListingId==Listing.Id)
  • 清单>>公共虚拟端口{get;set;}(Listing.PortId==Port.Id)
  • 端口>>公共虚拟国家/地区{get;set;}(Port.CountryId=Country.Id)

你好,盖伊如果是那样的话,你必须更换

.Include(i => i.ItineraryDays)

你会得到4

因为它们是“单一”属性,所以就可以了

编辑

哦,由于旅程中的
行程天数
(顺便说一句,可能会猜到)似乎是一个集合,你认为你必须这么做吗

.Include(i => i.ItineraryDays.Select(id => id.Listing.Port.Country))

您好,当我尝试此intellisense时,它通知我:无法将lambda表达式转换为“string”类型,因为它不是委托类型。你知道为什么吗?干杯Guy@GuyNortonKk,看看编辑,也许吧?我已经做到了:.Include(I=>I.itineraydays.Select(l=>l.Listing)。Select(p=>p.Port)。Select(c=>c.Country)),但是你的当然更好!问题是什么?
.Include(i => i.ItineraryDays.Select(id => id.Listing.Port.Country))