Attualmente sto utilizzando EF e ho due tabelle, Employees
e Orders
, dato che uno Employee
ha più Orders
.Come eseguire una inclusione condizionale in Entity Framework
Ho bisogno di eseguire una query in EF che mi porta un elenco di tutti Employees
con i relativi Orders
, ma solo quelli tra due date. Se lo Employee
non ha eseguito alcun Order
nel periodo indicato, il suo elenco Orders
sarà vuoto.
Ho pensato che ho bisogno di avviare la mia domanda dal DbSet Employees
, ma come posso assegnare una condizione alla proprietà Orders
?
Ho provato a farlo, ma ovviamente non ha funzionato.
public List<Employee> GetAllByIdListAndDateRange(int[] ids, DateTime fromDate, DateTime toDate)
{
var query = _context.Set<Employee>().Where(a => ids.Contains(a.EmployeeID)).Include(a => a.Orders.Where(o.OrderDate <= toDate && o.OrderDate >= fromDate));
return query.ToList();
}
Qualsiasi aiuto? Immagino che potrei perdere qualcosa di molto semplice qui.
possibile duplicato del [Entity Framework .Dove annidato in .include] (http://stackoverflow.com/questions/18709386/entity-framework-where-nested-in-include) – DavidG
usa left outer join.refer a questo link: http: //stackoverflow.com/questions/3404975/left-outer-join-in-linq – Arash