У меня есть класс округа, который выглядит следующим образом:Как вернуть предков объекта с помощью LINQ?
public class District
{
public int Id { get; set; }
public string Name { get; set; }
public District Parent { get; set; }
public IEnumerable<District> Ancestors { get { /* what goes here? */ } }
}
Я хотел бы, чтобы иметь возможность получить список предков каждого округа. Поэтому, если район «1.1.1» является ребенком района «1.1», который является ребенком района «1», получение предков в округе «1.1.1» вернет список, содержащий объекты округа, имена которых «1.1 »и« 1 ».
Это связано с утверждением возврата доходности (я никогда не понимал этого полностью)? Можно ли это сделать в одной строке?
Это выглядит хорошо - попробуйте сейчас. – Chris
как насчет циркулярной ссылки? –
@Elijah: Я предполагаю, что там нет * круговых ссылок. Если есть, вам нужно сохранить набор и сделать что-то вроде: while (parent! = Null &&! VisitedParents.Contains (parent)) –