У меня есть объект под названием Команда, которая имеет свойство Children, которая представляет список «суб команд» по этой командепересекать «дерево» динамически заданное число уровней
public class Team
{
public List<Team> Children {get;set;}
}
Я в настоящее время есть некоторый код, который делает это, чтобы создать единый список всех команд, но как вы можете видеть его «жестко» в терминах «уровней» она идет вниз:
Team topTeam = GetTopteam();
List<Team> allTeams = new List<Team>();
allTeams.Add(topTeam);
allTeams.AddRange(topTeam.Children);
var childrensChildren = topTeam.Children.SelectMany(r=>r.Children);
allTeams.AddRange(childrensChildren);
и продолжает идти. ,
Теперь я хочу, чтобы «уровни» настраивается так что-то вроде этого:
public IEnumberable<Team> GetTeams(int numberOfLevelsDown)
{
}
Если я прохожу в 1, я только возвращает список из topteam и его непосредственных детей.
Если я прохожу через 2, я получаю команду топ, дети и дети детей
и так далее. , ,
Что является самым элегантным способом динамического пересечения уровней в дереве?
Почему не рекурсия с декрементом 'numberOfLevelsDown' на каждом уровне? – Dmitry