LinqToSqlは、任意の深さの木を歩くことをサポートしていません。結果を生成するには、TSQL Whileループを使用してSQL関数を記述し、そのsql関数をlinqtosqlから呼び出す必要があります。
何かのようなもの:
DECLARE @MyNodeID int
SET @MyNodeID = 42
-- we're looking for the path from this ID back up to the root
-- we don't know the length of the path.
DECLARE @MyTable TABLE
(
int ID PRIMARY KEY,
int ParentID,
)
DECLARE @ID int
DECLARE @ParentID int
SELECT @ID = ID, @ParentId = ParentId
FROM MyRecursiveObject
WHERE ID = @MyNodeID
WHILE @ID is not null
BEGIN
INSERT INTO @MyTable (ID, ParentID) SELECT @ID, @ParentID
SET @ID = null
SELECT @ID = ID, @ParentId = ParentID
FROM MyRecursiveObject
WHERE ID = @ParentID
END
SELECT ID, ParentID FROM @MyTable --results