EF4 / LINQ:在一个查询中检索两个子节点

时间:2012-10-16 14:46:10

标签: vb.net linq entity-framework-4

这是我的小问题:我有一个基于以下数据结构的EF4代码优先项目。

说,作为我有房子的实体,有多个房间,每个都有多个窗户。这非常线性。但窗口包含一系列材料以及一系列颜色。我现在想要加载房子,取决于房间,取决于窗户,取决于颜色材料。

我使用以下代码加载所有房屋,其中包含取决于

  • 房间 - >窗口 - >材料或
  • 房间 - >窗口 - >使用以下代码颜色:

// house -> room -> window -> material
queryableHouses.Include(Of Room)(Function(u) CType(u.Rooms.Select(Function(v) v.Windows.Select(Function(w) w.Materials)), Room))
// house -> room -> window -> color
queryableHouses.Include(Of Room)(Function(u) CType(u.Rooms.Select(Function(v) v.Windows.Select(Function(w) w.Colors)), Room))

如何获得包含材质和颜色的单个结果集?

非常感谢你!

1 个答案:

答案 0 :(得分:0)

我正在考虑join来帮助解决这个问题。就像SQL中的连接一样。你可以使用类似下面的内容,女巫是你描述的草稿......

 'select windows 
 dim query = (From w In (queryableHouses.Include(Of Room)(Function(u) CType(u.Rooms.Select(Function(v) v.Windows), Room)))

'add color from windows
Join  w.color in (queryableHouses.Include(Of Room)(Function(u) CType(u.Rooms.Select(Function(v) v.Windows), Room)) Select u.color) On w.color = u.color

'add material also from window
Join w.material in (queryableHouses.Include(Of Room)(Function(u) CType(u.Rooms.Select(Function(v) v.Windows), Room)) Select u.material)) On w.material = u.material


'then select the result 
Select w)

请根据需要更正,这只是一个建议。我希望你能更多地了解这个的含义而不是写的内容。