Có thể thực hiện các biểu thức bảng chung (CTE) (như được hiển thị bên dưới) trong LINQ to SQL hay không. Tôi khá mới với CTE cũng như LINQ to SQL.Biểu thức bảng chung (CTE) trong linq-to-sql?
Tôi hiện đang lưu trữ Proc miễn phí (nhưng không chống lại chúng bằng bất kỳ phương tiện nào) vì vậy tôi không muốn thực hiện bước nhảy vọt để lưu trữ procs chỉ cho một truy vấn trừ khi nó hoàn toàn cần thiết.
Dưới đây là một ví dụ về những gì tôi đang làm trong SQL mà tôi đang tự hỏi nếu tôi có thể làm trong 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]