问题描述
||
说我有一个像这样的数据集:
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文件中。