Q:

Select several levels of childs

I'm using entity Framework 6. 
On my database I have these tables :
MasterTable ( Id , name)
    Child1 ( ID , name , vl1 , Master_ID)
    Child2 ( ID , name , vl2 , MasterID )
    Child3 (ID , name , vl3 , Master_ID )
        Child3Itm ( ID , name , Child3_ID)

For a given MasterTable item, I want to load with a single Query from database:

All Child1 where vl1 > 5
All Child2 where vl2 > 6
All Child3 where vl3 > 7

And in each Child3 to load all of the Child3Itm content. 
I'm using this query:
Dim lst = (From t In context. MasterTable. Where(Function(t1) t1.id = 7)
                 Select New With {
                                   t,
                                   .chld1 = t.child1s. Where(Function(t21) t21.vl1 >5),
                                   .chld2 = t.child2s. Where(Function(t31) t31.vl2>6 ),
                                   .chld3 = t.child3s. Where(Function(t41) t41.vl3>7).Select(Function(t411) t411.Child3Itms)
                                  }).ToList

The problem is that no Child3 are selected.  All others are OK.  What can i do?  Thanks in advance! 

A:

Dim lst = (From t In context. MasterTable. Where(Function(t1) t1.id = 7)
              Select New With {
                           t,
                           .chld1 = t.child1s. Where(Function(t21) t21.vl1 >5),
                           .chld2 = t.child2s. Where(Function(t31) t31.vl2>6 ),
                           .chld3 = (From t2 in t.child3s. Where(Function(t41) t41.vl3>7) 
                                Select New With {
                                           t2,
                                           .chld3it=t2.Child3Itms   
                                                 })
                               }).ToList

This is working too. 
If someone can tell me if this answer is better or no compared with the other solution posted by antoni ???