gpt4 book ai didi

c# - 如何在 Entity Framework 中执行条件包含

转载 作者:太空狗 更新时间:2023-10-29 23:30:12 24 4
gpt4 key购买 nike

我目前正在使用 EF,我有两个表,EmployeesOrders,假设一个 Employee 有多个 Orders

我需要在 EF 中执行查询,为我提供所有 Employees 及其相关 Orders 的列表,但仅限于两个日期之间的列表。如果 Employee 在给定时间段内没有执行任何 Order,则他的 Orders 列表将为空。

我认为我需要从 Employees DbSet 开始我的查询,但我如何为 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();
}

有什么帮助吗?我想我可能错过了一些非常简单的东西。

最佳答案

您不能在 Include 中使用 Where 谓词,但如果您从 Orders 开始,则可以简化查询。

如果你再想一想,你需要查询的是订单而不是员工。

var query = _context.Set<Orders>()
.Where(o => o.OrderDate <= toDate &&
o.OrderDate >= fromDate &&
ids.Contains(o.EmployeeID))
.Include(e => e.Employee));

关于c# - 如何在 Entity Framework 中执行条件包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32355222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com