我知道这不会像书面那样有效,但我很难看到正确的答案,而这个非功能性的代码有望说明我正在努力实现的目标:
var defaults = _cilQueryContext.DefaultCharges
.Where(dc => dc.ChargingSchedule_RowId == cs.RowId);
List<DevelopmentType> devTypes =
defaults.Select(dc => dc.DevelopmentType)
.Include(d => d.DefaultCharges)
.Include(d => d.OverrideCharges.Where(oc => oc.ChargingSchedule_RowId == cs.RowId))
.Include(d => d.OverrideCharges.Select(o => o.Zone))
.ToList();
基本上,我认为这需要一个连接,但是当我试图选择一个包含两个相关类型的子节点的父对象时,我看不出连接的“select new”子句会有什么。< / p>
答案 0 :(得分:2)
据我所知Include
不支持这种类型的子查询。您最好的选择是使用投影,例如
List<DevelopmentType> devTypes =
defaults.Include(x => x.DefaultCharges)
.Include(x => x.OverrideCharges)
.Select(x => new {
DevType = x.DevelopmentType,
Zones = x.OverrideCharges.Where(oc => oc.ChargingSchedule_RowId == cs.RowId)
.Select(oc => oc.Zone).ToList()
})
.Select(x => x.DevType)
.ToList();