Как включить отсортированные свойства навигации с Entity Framework

У меня есть объект A с коллекцией B внутри. Я загружаю их с помощью _entity.A.Include(a => a.B)

Теперь я хочу, чтобы B были отсортированы по пользовательскому OrderBy. Я пробовал _entity.A.Include(a => a.B.OrderBy(o => o.Version), но получаю:

Выражение Include path должно ссылаться на свойство навигации, определенное для типа. Используйте пунктирные пути для ссылок на свойства навигации и оператор Select для свойств навигации коллекции.

Любые идеи о том, как это сделать?

Спасибо.

Версия является целым числом.


person Ignacio Soler Garcia    schedule 05.11.2012    source источник
comment
Можете ли вы опубликовать тело вашего OrderBy ?   -  person Mateusz Rogulski    schedule 05.11.2012


Ответы (1)


Я думаю, в этом случае вы можете попробовать:

var list = _entity.A.Include("B").ToList();
list.ForEach(m => m.B = m.B.OrderBy(o => o.Version));

or:

_entity.A.Include("B").Select(m => new A {
        //some props,
        B = m.B.OrderBy(o => o.Version)
        });
person Mateusz Rogulski    schedule 05.11.2012
comment
Согласитесь, но можно ли это сделать с помощью всего одного запроса, чтобы избежать повторного зацикливания коллекций? - person Ignacio Soler Garcia; 05.11.2012
comment
@SoMoS Я добавил второе решение, которое помещается в одну строку, но я не уверен, какое лучше. - person Mateusz Rogulski; 05.11.2012
comment
Что ж, я не совсем доволен решением, но соглашусь, так как других вариантов у меня нет. Спасибо! - person Ignacio Soler Garcia; 06.11.2012