LINQ-to-SQL: сортировка связанной сущности, установленной во время загрузки - PullRequest
0 голосов
/ 02 февраля 2011

Представьте, что у меня есть две таблицы ShowTimes и Movies.Каждый фильм может иметь список связанных с ShowTimes.Скажем, таблица ShowTimes содержит поле DateTime с именем StartTime.ShowTimes могут появляться в таблице в любом порядке (менеджер театра может добавлять новые показы в любое время).

Следовательно, объект LINQ-to-SQL Movie будет содержать

public EntitySet<ShowTime> ShowTimes;

поле, которое будет загружено при первом обращении к нему.

Есть ли способ контролировать порядок сортировки ShowTimes, чтобы он был отсортирован StartTime при загрузке?Или я должен сам разобраться, прежде чем использовать его?Могу ли я контролировать «естественный порядок» таблицы ShowTimes - по умолчанию она сортируется по первичному ключу (в моем случае - целому числу), могу ли я указать, что она должна быть отсортирована по StartTime?

Ответы [ 2 ]

4 голосов
/ 03 февраля 2011

Можно установить порядок сортировки по умолчанию для дочерних объектов с помощью DataLoadOptions.AssociateWith().

Например:

DataContext context = new DataContext();

DataLoadOptions options = new DataLoadOptions();

options.AssociateWith<Movie>(movie => movie.ShowTimes
                    .OrderBy(showtime => showtime.StartTime));

context.LoadOptions = options;

// do your queries here, after the LoadOptions has been set

Обратите внимание, что LoadOptions можно установить только один раз для DataContext.

Также обратите внимание, что DataLoadOptions может использоваться для активной загрузки , дочерних объектов.

0 голосов
/ 02 февраля 2011

Вы можете обойти отложенную загрузку, используя .ToList (), .ToArray () или .ToDictionary ().

IEnumerable<ShowTime> ShowTimes = 
     (from showtime in DataContext.ShowTimes
     order by showtime.StartTime
     select showtime).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...