今天在使用 LINQ 时,我发现 LINQ to 实体不支持 TakeWhile(),有没有有效的方法来实现这样的功能?我的用例如下 -
我有一个员工实体,我已经按名称对实体进行了排序,现在我想从这个 IQueryable 中获取记录直到时间(EmployeeID = 123)
像这样的东西-
IQueryable<Employee> employees = ObjectContext.Employees
.OrderBy(a => a.Name)
.TakeWhile(a => a.EmployeeId != 123)
但是在上面的代码中,Linq to Entities 不支持 TakeWhile,因此它会引发错误。
我正在尝试以下方法,如果有人有更好和有效的方法,请告诉我:
- 获取前 X 条记录,
- 检查所需的 EmployeeId 是否是其中的一部分,
- 如果不是,则获取下一组 X 记录
- 并将它们与上一组连接起来
- 并检查 EmployeeID 是否再次成为其中的一部分,
- 在 X 记录集中找到匹配的 EmployeeId 时中断循环。