假设我有一个这样的数据集:
PersonId | ManagerId | DepartmentId
========================================
1 null 1
2 1 1
3 1 2
4 2 1
等等。
我正在寻找一个Linq查询:
给出 ManagerId 和一组 DepartmentIds 会给我所有 相关的 PersonIds 。查询应该 在经理下面返回所有PersonIds , 一直到树下,不只是 紧接那位经理的人。
以下是我到目前为止所尝试的内容:http://pastebin.com/zF9dq6wj
谢谢! 克里斯。
答案 0 :(得分:5)
使用Linq,没有多次自动方式(我听说过)没有多次访问数据库。因此,它与任何其他递归调用结构没有什么不同,您可以在递归方法调用之间选择,一段时间使用System.Collections.Queue(或Stack)对象进行ID等。如果您的后端数据库是SQL Server 2008或更高,你可以利用它的递归查询功能,但你必须调用一个sproc来做它,因为Linq将无法自己进行翻译。
答案 1 :(得分:1)
您无法在Linq2SQL或Linq2Entities中执行递归查询。我建议用CTE编写一个View并将其添加到DataContext文件中。