26
是否有可能在Linq to SQL中執行公用表表達式(CTE)(如下所示)。我對CTE和Linq to SQL都很陌生。linq-to-sql中的公用表表達式(CTE)?
我目前存儲過程免費(但不是以任何方式反對他們),所以我不想爲一個查詢跳過存儲過程,除非它是完全必要的。
下面是我想知道如果我可以做的LINQ到SQL的我在做什麼在SQL的例子:
WITH TaskHierarchy (TaskID, [Subject], ParentID, HierarchyLevel, HierarchyPath) AS
(
-- Base case
SELECT
TaskID,
[Subject],
ParentID,
1 as HierarchyLevel,
CONVERT(VARCHAR(MAX),'/') AS HierarchyPath
FROM Task
WHERE TaskID = 2
UNION ALL
-- Recursive step
SELECT
t.TaskID,
t.Subject,
t.ParentID,
th.HierarchyLevel + 1 AS HierarchyLevel,
CONVERT(varchar(MAX),th.HierarchyPath + CONVERT(VARCHAR(32),t.ParentID) + '/') AS HierarchyPath
FROM Task t
INNER JOIN TaskHierarchy th ON
t.ParentID = th.TaskID
)
SELECT *
FROM TaskHierarchy
ORDER BY HierarchyLevel, [Subject]