使用LINQ to SQL获取未知数量的父节点



考虑到以下内容:

public class Person
{
  public int  PersonId { get; set; }
  public int? ParentId { get; set; }
}

假设我有以下树结构(PersonID - ParentID):

1 - null
  2 - 1
    3 - 2
  4 - 1

我怎么能得到所有的父母的PersonId 3,或2,1使用LINQ到SQL查询?

注:null ParentId表示顶级Person

你需要一个循环(或其他形式的递归)。

var personId = 3 as int?;
var result = new List<Person>();
do
{
    var person = context.Persons.Single(p => p.PersonId == personId.Value);
    result.Add(person);
    personId = person.ParentId;
} while (personId != null);
// all ancestors are in `result`

相关内容

  • 没有找到相关文章