【发布时间】:2020-02-24 10:17:51
【问题描述】:
我有一个 MS SQL 服务器,它的表是自链接的
| Id| PreviousId| Decription |
|---|:---------:|------------:|
| 1 | null | Blah |
| 2 | 1 | Blah |
| 3 | 2 | Blah |
我需要获取从Id=3 开始的所有记录的列表。
我的列表应该是这样的:
public class Record{
public int Id {get;set;}
public int? PrevId {get;set;}
public string Desc {get;set;}
}
List<Record> records= new List<Record>();
/*Code to get all records*/
//Result
record[0] = Record(){Id=3,PrevId=2,Descr="Blah"}
record[1] = Record(){Id=2,PrevId=1,Descr="Blah"}
record[2] = Record(){Id=1,PrevId=null,Descr="Blah"}
谢谢!
编辑1: 对不起,伙计们,但我没有提到那个 ID 不正确。并且可能会出现以下情况,例如,ID=17 的记录链接到 id =12 的先前记录
【问题讨论】:
-
这个分配
record[0] = Record(){Id=3,PrevId=2,Descr="Blah"}不正确 -
@PavelAnikhouski:这只是对结果应该如何的描述
-
我需要获取从Id=3开始的所有记录的列表 为什么结果包含id等于1和2的记录?请澄清你的问题
-
听起来您的意思是要按 ID 降序排列它们 -
var results = records.OrderByDescending(x => x.Id); -
我以为他想检索层次结构。更像是“给我记录 id 3 及其所有祖先”。
标签: c# .net linq-to-sql