Ecco il problema: Devo restituire una raccolta di oggetti con raccolte nidificate filtrate. E.g: c'è un negozio con ordini e ho bisogno di restituire una collezione con negozi che include collezioni annidate con ordini ma senza ordini da parte di clienti che sono contrassegnati come cancellati.Come filtrare gli oggetti Entity Framework di raccolta nidificata?
Ecco quello che cerco di fare. Ma ancora senza fortuna. Qualsiasi suggerimento è appreso :)
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;
}
Il problema è che il filtro non viene applicato. I clienti che hanno il flag eliminato impostato su true rimangono nella raccolta.
E qual è il problema? Non si compila? Genera un'eccezione di runtime?Esegue ma restituisce i dati errati? –
ha spiegato un po 'di più. grazie. –
Ho finito per utilizzare questo pacchetto nuget: 'Z.EntityFramework.Plus.QueryIncludeFilter.EF6' Documentazione qui: https://github.com/zzzprojects/EntityFramework-Plus/wiki/EF-Query-IncludeFilter-%7C-Entity- Framework-Include-Related-Entities-using-Where-Filter –