如何对EF返回的实体中的内部列表进行排序

本文关键字:内部 列表 排序 实体 EF 返回 | 更新日期: 2023-09-27 18:11:34

如何对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;

,但这不是一个有效的方法。我也检查了这个解决方案,但它不工作。

如何对EF返回的实体中的内部列表进行排序

现在,EF不支持在Include语句中执行任何逻辑。希望将来我们能获得这个功能,尽管它不会对性能产生太大的影响,因为在SQL中没有办法在一个查询中返回多个结果集。

你的解决方案是最有效的,因为你可以控制延迟/急切加载。另一种设置是将Orders集合设置为已排序的集合,因此在客户端而不是SQL中进行排序。