递归Linq查询-Person>;经理>;部门
本文关键字:gt 经理 部门 Linq 查询 递归 -Person | 更新日期: 2023-09-27 17:58:57
假设我有这样的数据集:
PersonId | ManagerId | DepartmentId
========================================
1 null 1
2 1 1
3 1 2
4 2 1
等等
我正在寻找一个Linq查询,它:
给定一个ManagerId和一组部门ID将提供所有信息相关人员ID。查询应该return管理器下的所有PersonIds,一直到树下,不仅仅那些直接在经理手下的人。
以下是我迄今为止所做的尝试:http://pastebin.com/zF9dq6wj
谢谢!克里斯。
使用Linq,如果不多次访问数据库,就没有自动的方法(我听说过)。因此,它实际上与任何其他递归调用结构都没有什么不同,您可以在递归方法调用之间进行选择,也可以使用System.Collections.Queue(或Stack)对象作为id等。如果您的后端数据库是SQL Server 2008或更高版本,则可以利用它的递归查询功能,但您必须调用存储过程才能完成,因为Linq本身无法进行翻译。
您不能在Linq2SQL或Linq2Entities中执行递归查询。我建议编写一个带有CTE的视图,并将其添加到DataContext文件中。