Luc*_*iro 5 c# entity-framework
我目前正在使用EF而且我有两张桌子,Employees并且Orders鉴于它Employee有多个Orders.
我需要在EF中执行一个查询,它会为我提供所有Employees相关的列表Orders,但只包含两个日期之间的查询.如果在给定时间内Employee没有执行任何操作Order,他的Orders列表将为空.
我想我需要从EmployeesDbSet 开始我的查询,但是如何为Orders属性分配条件?
我试图这样做,但显然它没有用.
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();
}
Run Code Online (Sandbox Code Playgroud)
有帮助吗?我想我可能会错过这里非常简单的事情.
您不能在 Include 中使用Where 谓词,但如果从 Orders 开始,则可以简化查询。
如果您再想一想,您需要查询的是订单而不是员工。
var query = _context.Set<Orders>()
.Where(o => o.OrderDate <= toDate &&
o.OrderDate >= fromDate &&
ids.Contains(o.EmployeeID))
.Include(e => e.Employee));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2607 次 |
| 最近记录: |