Как отфильтровать вложенные коллекции объектов Entity Framework?

Вот проблема: Мне нужно вернуть коллекцию объектов с отфильтрованными вложенными коллекциями. Например: есть магазин с заказами, и мне нужно вернуть коллекцию с магазинами, которая включает вложенные коллекции с заказами, но без заказов от клиентов, отмеченных как удаленные.

Вот что я пытаюсь сделать. Но все равно не повезло. Любые предложения приветствуются :)

public List<StoreEntity> GetStores(Func<Store, bool> storeFilter, Predicate<OrderEntity> orderFileter)
{
    IQueryable<StoreEntity> storeEntities = Context.Stores
        .Include(o => o.Order)
        .Include(cu => cu.Orders.Select(c => c.Customer))
        .Where(storeFilter)
        //.Where(rcu=>rcu.Orders.Select(cu=>cu.Customer.Deleted==false)) //just test this doesn't work
        .AsQueryable();

    List<StoreEntity> storeEntities = storeEntities.ToList();

    //storeEntities.ForEach(s => s.Orders.ToList().RemoveAll(c=>c.Customer.Deleted==true)); // doesn't work

    foreach (StoreEntity storeEntity in storeEntities)
    {
        storeEntity.Orders.ToList().RemoveAll(r=>r.Customer.Deleted==true);
    }

    return storeEntities;
}

Проблема в том, что фильтр не применяется. Клиенты, для которых установлен флаг удаления, остаются в коллекции.

23
задан Melisco 26 April 2018 в 13:45
поделиться