Linq to SQL で共通テーブル式 (CTE) (以下に示すような) を実行することは可能ですか? 私はCTEとLinq to SQLにかなり慣れていません。
私は現在ストアド プロシージャを無料で使用しています (ただし、決して反対ではありません) ので、完全に必要でない限り、1 つのクエリのためだけにストアド プロシージャに飛びつきたくありません。
これは、Linq to 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]