在 Linq to SQL 中是否可以像下面展示的一样进行常用表达式 (CTE)。我对 CTE 和 Linq to SQL 都比较新。
当前我没有使用存储过程(但不反对使用),所以我不想为了一个查询而跨越到存储过程,除非是完全必要的。
这里有一个我在 SQL 中正在做的示例,我想知道是否可以在 Linq to 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]