Преобразование оператора sql, содержащего 'with' cte, в linq

Эй, у меня есть этот фрагмент кода, я часами борюсь с ним. В основном, то, что делает этот оператор sql, - это получение ВСЕХ подпапок указанной папки (@compositeId).

WITH auto_table (id, Name, ParentID) AS
(
SELECT
    C.ID, C.Name, C.ParentID
FROM Composite_Table AS C
    WHERE C.ID = @compositeId

UNION ALL

SELECT
    C.ID, C.Name, C.ParentID
FROM Composite_Table AS C
    INNER JOIN auto_table AS a_t ON C.ParentID = a_t.ID
)

SELECT * FROM auto_table

Этот запрос вернет примерно следующее:

  • Id | Name | ParentId
  • 1 | StartFolder | NULL
  • 2 | Folder2 | 1
  • 4 | Folder3 | 1
  • 5 | Folder4 | 4

Теперь я хочу преобразовать код в linq. Я знаю, что это связано с некоторой формой рекурсии, но все еще зависает благодаря оператору with. Help?

5
задан sch55 3 May 2011 в 22:20
поделиться