我无法弄清楚如何(以及在何处)在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设计者生成的类型。
谢谢, 亚当
答案 0 :(得分:2)
将您的选择部分更改为......
select new SubscriptionType{ ?,?,?,
Subscriptions = a.Subscription.OrderBy(b=>b.?)}
答案 1 :(得分:1)
您可以将现有查询更改为此,并且应该执行您要查找的内容。
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;
}
显然,如果你想要的话,下降可能会提升。