递归Linq查询 - Person> Manager> Dept

chr*_*ofr 0 c# sql linq

假设我有一个这样的数据集:

PersonId  |   ManagerId  |  DepartmentId
========================================

1             null          1
2             1             1
3             1             2
4             2             1
Run Code Online (Sandbox Code Playgroud)

等等.

我正在寻找一个Linq查询:

给定一个ManagerId和一组 DepartmentId将给我所有相关的PersonIds.查询应该返回管理器下的所有PersonId,一直到树下,而不仅仅是那个管理器下面的那些.

这是我到目前为止所尝试的:http://pastebin.com/zF9dq6wj

谢谢!克里斯.

Jac*_*itt 5

使用Linq,没有自动的方法来做这个(我听说过)没有多次访问数据库.因此,它实际上与任何其他递归调用结构没有什么不同,您可以在递归方法调用之间选择,一段时间使用System.Collections.Queue(或Stack)对象进行ID等.如果您的后端数据库是SQL Server 2008或更高,你可以利用它的递归查询功能,但你必须调用一个sproc来做它,因为Linq将无法自己进行翻译.