给定以下模型列表
public class Team
{
public int TeamId { get; set; }
public int ParentTeamId { get; set; }
}
我想编写一个递归的linq查询,以便获取类似于以下结构的层次结构
Team
ChildTeams
Team
Team
ChildTeams
我尝试了许多方法并看到了许多类似的问题,但都没有特别帮助我解决问题。我最近尝试的一种方法是这样的:
private class TeamGrouping
{
public int? ParentTeamId { get; set; }
public IEnumerable<Team> ChildTeams { get; set; }
public IEnumerable<TeamGrouping> Grouping { get; set; }
}
private IEnumerable<TeamGrouping> ToGrouping(IEnumerable<Team> teams)
{
return teams.GroupBy(t => t.ParentTeamId, (parentTeam, childTeams) => new TeamGrouping {ParentTeamId = parentTeam, ChildTeams = childTeams});
}
private IEnumerable<TeamGrouping> ToGrouping(IEnumerable<TeamGrouping> teams)
{
return teams.GroupBy(t => t.ParentTeamId, (parentTeam, childTeams) => new TeamGrouping{ParentTeamId = parentTeam, Grouping = childTeams});
}
我会将团队列表传递给第一个
ToGrouping(IEnumerable<Team>)
,然后将返回的分组传递给 ToGrouping(IEnumerable<TeamGrouping>)
,但这样会产生不正确的结果。有人有什么建议或想法吗?