Заказ включенного объекта - PullRequest
1 голос
/ 24 марта 2019

Я использую Entity Framework v2.2.3. Я пытаюсь заказать подобъект с помощью следующего кода, но он не работает.

var result= _databaseContext.Movie.AsNoTracking().Include(p => p.Cast.OrderByDescending(c => c.Birthday)).ToList();

Ошибка:

Лямбда-выражение свойства Include 'p => {из Cast c в p.Casts orderby [c] .Birthday desc select [c]}' недопустимо. Выражение должно представлять доступ к свойству: 't => t.MyProperty'. Чтобы нацелить навигацию, объявленную на производные типы, укажите лямбда-параметр с явно заданным типом целевого типа, например, g. '(Производный d) => d.MyProperty'. Для получения дополнительной информации о включении связанных данных см. http://go.microsoft.com/fwlink/?LinkID=746393.

Объекты:

public class Movie
    {
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }
        public List<Cast> Casts { get; set; }
    }

  public class Cast
    {
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }
        public DateTime Birthday { get; set; }
    }

У вас есть идеи?

1 Ответ

2 голосов
/ 24 марта 2019

Нет способа сортировки загруженных (.Include -запрошенных) дочерних коллекций, как мы видели здесь и здесь .

Вы должнысначала загрузите фильмы, а затем отсортируйте их каст-коллекции.Попробуйте это:

var result= _databaseContext.Movie.AsNoTracking().Include(p => p.Casts).ToList();

results.ForEach(x => x.Casts = x.Casts.OrderBy(y => y.BirthDay).ToList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...