Linq 如何递归地选择父元素下的所有子元素?

Linq 如何递归地选择父元素下的所有子元素?,linq,linq-to-sql,Linq,Linq To Sql,假设我们有一张桌子: WORKER NAME ID ManagerID ------------------------ John 1 3 Sally 2 3 Paul 3 4 Jane 4 5 Jennifer 5 8 约翰和莎莉为保罗工作,保罗为简工作 对于linq查询,我想输入它Jane的ID(4),并让它返回所有她的下属: John 1 3 Sally

假设我们有一张桌子:

WORKER  
NAME     ID    ManagerID  
------------------------
John     1     3  
Sally    2     3  
Paul     3     4  
Jane     4     5  
Jennifer 5     8  
约翰和莎莉为保罗工作,保罗为简工作

对于linq查询,我想输入它Jane的ID(4),并让它返回所有她的下属:

John     1     3  
Sally    2     3  
Paul     3     4
我还需要让这个查询递归地深入到所需的深度。例如,也许约翰有人为他工作,所以他们也会被包括在结果中


我曾考虑使用SelectMany,但不确定这是否可行:

db.Worker.SelectMany(w => w.ID).Where(w => w.ID == 4).ToList();

我使用的是LINQtoSQL,查询只能处理这一个表

您将如何构建此查询


编辑:下面是模型类的外观

WORKER  
ID          int    
Name        string  
ManagerID   int  

如果您想在SQL中执行此操作,则必须手动执行一些递归SQL。我们可以看到模型类吗?当然可以,只是添加了一个类可能的基本概念。如果你需要更多的细节,请告诉我有什么帮助。谢谢我在找你的ef模范班工人