递归Linq查询-人员>经理>部门

问题描述

|| 说我有一个像这样的数据集:
PersonId  |   ManagerId  |  DepartmentId
========================================

1             null          1
2             1             1
3             1             2
4             2             1
等等。 我正在寻找一个Linq查询,其中:   给定一个ManagerId和一组   DepartmentIds会给我全部   相关的PersonIds。查询应   返回经理下的所有PersonId,   一直到树下,而不仅仅是   那些直接在那个经理下的人。 这是我到目前为止尝试过的内容:http://pastebin.com/zF9dq6wj 谢谢! 克里斯。     

解决方法

        使用Linq,如果没有多次访问数据库,就没有自动的方法(我听说过)。这样,它实际上与任何其他递归调用结构都没有什么不同,您可以在递归方法调用之间进行选择,还可以选择使用System.Collections.Queue(或Stack)对象获取ID,等等。如果您的后端数据库是SQL,在Server 2008或更高版本中,您可以使用它的递归查询功能,但是您必须调用一个sproc来执行它,因为Linq无法自行进行翻译。     ,        您不能在Linq2SQL或Linq2Entities中执行递归查询。我建议用CTE编写一个View并将其添加到您的DataContext文件中。