首页 > 解决方案 > 如何从表中获取所有链接的记录

问题描述

我有一个带有自身链接的表的 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"} 

谢谢!

EDIT1:对不起,伙计们,但我没有提到 ID 不正确。并且可能会出现以下情况,例如,ID=17 的记录链接到 id =12 的先前记录

标签: c#.netlinq-to-sql

解决方案


假设您的表名为Record,那么在您的模型(上下文类)中,您应该具有表示表调用的属性RecordRecords(如果您在模型中设置复数名称)。因此,从表中获取记录是通过您可以使用普通 LINQ 方法的属性完成的,例如Where

var result = dbContext.Records.Where(r => r.Id >= 3).ToList();

ToList()将导致查询执行。

编辑:基于过滤PreviousId,然后使用:

var result = dbContext.Records.Where(r => r.PreviousId == 3).ToList();

推荐阅读