Est-il possible de faire des expressions de table communes (CTE) (comme illustré ci-dessous) dans Linq to SQL. Je suis assez nouveau pour CTE ainsi que Linq to SQL.Expression de table commune (CTE) dans linq-to-sql?
Je suis actuellement stocké Proc gratuit (mais pas contre eux par tous les moyens), donc je ne veux pas faire le saut à procs stocké juste pour une requête, sauf si c'est totalement nécessaire.
Voici un exemple de ce que je fais dans SQL que je me demande si je peux le faire dans 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]