Может ли кто-нибудь помочь мне с сетевой программой Python?

Итак, во-первых, ваш TeamGrouping на самом деле немного сложнее, чем нужно. Все, что ему нужно, это объект Team и его последовательность для детей:

public class TeamNode
{
    public Team Value { get; set; }
    public IEnumerable<TeamNode> Children { get; set; }
}

Далее мы возьмем нашу последовательность команд и создадим узел для каждого из них. Затем мы будем использовать ToLookup, чтобы сгруппировать их по их родительскому идентификатору. (Ваше использование GroupBy довольно близко к этому, но ToLookup будет проще.) Наконец, мы можем просто установить, чтобы дети каждого узла были значением поиска для этого узла (обратите внимание, что ILookup вернет пустую последовательность если ключ не существует, поэтому наши листья будут обработаны отлично). Чтобы закончить его, мы можем вернуть все узлы верхнего уровня, просто просмотрев все узлы с родительским идентификатором null.

public static IEnumerable<TeamNode> CreateTree(IEnumerable<Team> allTeams)
{
    var allNodes = allTeams.Select(team => new TeamNode() { Value = team })
        .ToList();
    var lookup = allNodes.ToLookup(team => team.Value.ParentTeamId);
    foreach (var node in allNodes)
        node.Children = lookup[node.Value.TeamId];
    return lookup[null];
}
-8
задан DavidG 5 July 2017 в 11:56
поделиться