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

时间:2011-10-19 05:59:09

标签: c# sorting linq-to-entities sql-order-by

如何在一个查询中对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,但它无论如何都不起作用。

1 个答案:

答案 0 :(得分:0)

目前,EF不支持在Include语句中执行任何逻辑。希望将来我们将被授予此功能,尽管它在性能上没有太大差异,因为在SQL中无法在1个查询中返回多个结果集。

您的解决方案同样有效,因为您可以控制延迟/急切加载。另一个设置是使Orders集合成为Sorted集合,因此在客户端而不是在SQL中进行排序。