考虑到以下内容:
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`