在SQL或LINQ查询中排序链接列表结构?

Mic*_*tum 5 .net t-sql

我有一个基本上看起来像这样的数据库:

id uniqueidentifier NOT NULL
data nvarchar
nextid uniqueidentifier NULL
Run Code Online (Sandbox Code Playgroud)

这是一个链接列表,因为每个nextid链接到该表中的id,除了最后一个,这里nextid为NULL.我知道第一个节点的id.

我想以正确的顺序选择它们,给出一个起始ID.

有没有办法可以在T-SQL (编辑:SQL 2008)或LINQ中完成?

我知道我可以编写代码在C#中手动执行,只是想知道我是否可以按顺序查询?

Eri*_*ung 5

不确定[SortOrder]有什么不同,因为我没有足够的数据来测试它.它允许您在两个方向上排序.

with cteList as
(
    select id, data, nextid, 1 as [SortOrder]
    from #TableTemp
    where id = 'E8ADAA52-54F8-4FE3-BE59-9852E52B33F5' --id of the 1st item

    union all

    select #TableTemp.id, #TableTemp.data, #TableTemp.nextid, (cteList.[SortOrder] + 1) as [SortOrder]
    from #TableTemp
    join cteList on #TableTemp.id = cteList.nextid
)
select * from cteList
order by [SortOrder] asc
Run Code Online (Sandbox Code Playgroud)