Ich verwende derzeit EF und ich habe zwei Tabellen, Employees
und Orders
, vorausgesetzt, dass ein Employee
mehrere Orders
haben.Wie führe ich ein bedingtes Include in Entity Framework durch?
Ich brauche eine Abfrage in EF, die mir eine Liste aller Employees
mit ihren verwandten Orders
bringt, aber nur diejenigen zwischen zwei Daten. Wenn ein Employee
in dem angegebenen Zeitraum keinen Order
ausführt, ist seine Orders
Liste leer.
Ich dachte, dass ich meine Abfrage von der Employees
DbSet starten muss, aber wie kann ich der Orders
Eigenschaft eine Bedingung zuweisen?
Ich habe versucht, dies zu tun, aber offensichtlich hat es nicht funktioniert.
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();
}
Irgendwelche Hilfe? Ich schätze, ich verpasse hier etwas wirklich Einfaches.
möglich Duplikat [Entity Framework .Where in .INCLUDE verschachtelt] (http://stackoverflow.com/questions/18709386/entity-framework-where-verschachtelt-in-include) – DavidG
Verwenden Sie den linken äußeren join.refer zu diesem Link: http: //stackoverflow.com/questions/3404975/left-outer-join-in-lin – Arash