鉴于以下内容:
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 3
或2,1
的所有父级?
注意:null
ParentId表示顶级人物
答案 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`