如何在一个查询中对EF返回的实体的内部集合进行排序?
public abstract class BatchOrder
{
//..
public virtual ICollection<Order> Orders { get; set; }
//..
}
我可以这样做:
var orders = DataContext.Orders
.Where(o => o.BatchOrderId == batchOrderId)
.OrderBy(o => o.SequenceNo)
.ToList();
var bmo = DataContext.BatchOrders
.Include("Track")
.Include("Customer")
.OfType<BatchMoneyOrder>()
.AsExpandable()
.Where(o => o.Id == batchOrderId)
.FirstOrDefault();
bmo.Orders = orders;
但这不是一种有效的方法。 我也检查了this solution,但它无论如何都不起作用。
答案 0 :(得分:0)
目前,EF不支持在Include语句中执行任何逻辑。希望将来我们将被授予此功能,尽管它在性能上没有太大差异,因为在SQL中无法在1个查询中返回多个结果集。
您的解决方案同样有效,因为您可以控制延迟/急切加载。另一个设置是使Orders集合成为Sorted集合,因此在客户端而不是在SQL中进行排序。