Как отсортировать внутренний список в сущности, возвращаемой EF? - PullRequest
0 голосов
/ 19 октября 2011

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

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

1 Ответ

0 голосов
/ 19 октября 2011

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

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

...