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

时间:2011-04-28 20:13:59

标签: linq linq-to-sql linq-to-entities parent-child

鉴于以下内容:

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

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

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

如何使用LINQ to SQL查询获取PersonId 32,1的所有父级?

注意:null ParentId表示顶级人物

1 个答案:

答案 0 :(得分:2)

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

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`