Упорядочить свойства навигации при использовании методов Include и/или Select в EF 4.1 Code-First?

Это второй шаг вопроса, объясненного здесь: EF 4.1 code-first: Как загрузить связанные данные (родитель-ребенок-внук)?. Под руководством @Slauma я успешно извлек данные с помощью этого подхода:

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

Хотя этот подход работает, он посылает много запросов к базе данных, и я ищу способ сделать все это одним запросом. С помощью рекомендаций @Slauma (объясненных в ответе по вышеуказанной ссылке) я изменил запрос на такой:

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

Теперь, как я могу упорядочить детей (и внуков) при выборе (как показано в первом примере кода выше)?

8
задан DavidRR 29 October 2018 в 19:31
поделиться