This is the second step of a question explained here (EF 4.1 code-first: How to load related data (parent-child-grandchild)? ). By @Slauma's guidance I could retrieve data. My first code was this:
var model = DbContext.SitePages .Where(p => p.ParentId == null && p.Level == 1) .OrderBy(p => p.Order) // ordering parent .ToList(); foreach (var child in model) { // loading children DbContext.Entry(child) .Collection(t => t.Children) .Query() .OrderBy(t => t.Order) // ordering children .Load(); foreach (var grand in child.Children) { // loading grandchildren DbContext.Entry(grand) .Collection(t => t.Children) .Query() .OrderBy(t => t.Order) // ordering grandchildren .Load(); } } It works, but, this will send many queries against the database and I was searching a way to do this all in just one query. By @Slauma's guidance (explained on above link) I change the query to this one:
var model2 = DbContext.SitePages .Where(p => p.ParentId == null && p.Level == 1) .OrderBy(p => p.Order) .Include(p => p.Children // Children: how to order theme??? .Select(c => c.Children) // Grandchildren: how to order them??? ).ToList(); Now, how can I order children (and grandchildren) when selecting them (such as first code above)?