Заказ подколлекций в запросе EF / LINQ - PullRequest
0 голосов
/ 21 декабря 2010

У меня проблемы с выяснением, как (и где) упорядочить подколлекцию в запросе LINQ / EF.

В основном у меня есть коллекция SubscriptionTypes, у каждого из которых есть своя собственная коллекция подписок. Я бы хотел, чтобы каждая подписка в коллекции заказывалась NumberOfMonths.

Вот мой текущий запрос:

    public IQueryable<SubscriptionType> SubscriptionTypesByProperty(string propertyCode)
{
    return from a in db.SubscriptionTypes.Include("Subscriptions")
           where a.Subscriptions.Any(x => x.PropertyCode == propertyCode)
           select a;
}

Я бы хотел, чтобы подписки заказывались NumberOfMonths. Я попробовал это:

    public IQueryable<SubscriptionType> SubscriptionTypesByProperty(string propertyCode)
    {
        return from a in db.SubscriptionTypes.Include("Subscriptions")
               where a.Subscriptions.OrderBy(q => q.NumberOfMonths).Any(x => x.PropertyCode == propertyCode)
               select a;
    }

.. но это не правильно упорядочило подписки.

Кто-нибудь знает простой способ сделать это?

ОБНОВЛЕНИЕ: SubscriptionType и Subscription - это типы, сгенерированные конструктором EF.

Спасибо, Адам

Ответы [ 2 ]

2 голосов
/ 21 декабря 2010

Измените выбранную часть на вот так

   select new SubscriptionType{ ?,?,?, 
                    Subscriptions = a.Subscription.OrderBy(b=>b.?)}
1 голос
/ 21 декабря 2010

Вы можете изменить существующий запрос на этот, и он должен делать то, что вы ищете.

public IQueryable<SubscriptionType> SubscriptionTypesByProperty(string propertyCode)
{
    return from a in db.SubscriptionTypes.Include("Subscriptions")
           where a.Subscriptions.Any(x => x.PropertyCode == propertyCode)
           order by a.NumberOfMonths descending
           select a;
}

Очевидно, что по убыванию может быть возрастание, если вы этого хотите.

...