C# Linq-从层次结构父级中选择N级子级
我有以下两个表格: 父子关系表1:C# Linq-从层次结构父级中选择N级子级,c#,sql,linq,entity-framework,C#,Sql,Linq,Entity Framework,我有以下两个表格: 父子关系表1: SourceId SourceParentId 1 null 2 1 3 2 4 null Items (Table 2): Id SourceId 1 1 2 1 3 2 4 2 5 3 6 4 如何编写基于源ID返回所有项目的linq查询?如果我的输入是SourceId=1,我将得到项目1、2、3、4和
SourceId SourceParentId
1 null
2 1
3 2
4 null
Items (Table 2):
Id SourceId
1 1
2 1
3 2
4 2
5 3
6 4
如何编写基于源ID返回所有项目的linq查询?如果我的输入是SourceId=1,我将得到项目1、2、3、4和5。如果我输入的sourceId是2,我将得到3项:3、4和5。如果我对sourceID的输入为4,它将返回第6项。我的父级子级为N级,项目可以显示在任何级别。
帮助:来试试这个
--Variable to hold input value
DECLARE @inputSourceID INT = 1;
--Recursive CTE that finds all children of input SourceID
WITH MyCTE
AS
(
SELECT SourceID,
SourceParentID
FROM table1
WHERE SourceID = @inputSourceID
UNION ALL
SELECT table1.SourceID,
table1.SourceParentID
FROM table1
INNER JOIN MyCTE
ON table1.SourceParentID = MyCTE.SourceID
)
--Join the CTE with the table2 to find all id
SELECT table2.ID
FROM MyCTE
INNER JOIN table2
ON MyCTE.SourceID = table2.SourceID
看看这篇关于递归查询和EF的文章。很高兴我能帮上忙!:还有一个问题。此SQL查询工作正常。用linq编写相同的查询怎么样?我正在使用实体框架开发一个MVC restful web API。是否可以在linq中编写一个查询来连接控制器中的多个表?谢谢,对不起。我以前从未用过LINQ。