Как отсортировать внутренний список в сущности, возвращаемой EF?

Как отсортировать внутреннюю коллекцию объекта, возвращаемого 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;

но это не был бы эффективный способ сделать это. Я также проверял это решение но это все равно не работает.


person user1002474    schedule 19.10.2011    source источник
comment
Посмотрите на эти темы: stackoverflow.com/questions/3471588/, stackoverflow.com/questions/4156949/, stackoverflow .com / questions / 3565249 /   -  person Mentoliptus    schedule 19.10.2011


Ответы (1)


В настоящий момент EF не поддерживает никаких способов выполнения какой-либо логики в инструкции Include. Надеюсь, что в будущем нам будет предоставлена ​​эта функция, хотя она не будет иметь большого значения в производительности, поскольку в SQL нет возможности возвращать несколько наборов результатов в одном запросе в любом случае.

Ваше решение настолько эффективно, насколько возможно, поскольку вы можете контролировать ленивую / нетерпеливую загрузку. Другой вариант настройки - сделать коллекцию заказов сортированной коллекцией, поэтому сортировка выполняется на клиенте, а не в SQL.

person Polity    schedule 19.10.2011