Linq – 里面包括

我知道这不会像写的那样工作,但我很难看到正确的答案,而这个非function性的代码有望说明我正在努力实现的目标:

var defaults = _cilQueryContext.DefaultCharges .Where(dc => dc.ChargingSchedule_RowId == cs.RowId); List 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”子句会有什么。

据我所知, Include不支持这种类型的子查询。 你最好的选择是使用投影,例如

 List 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();