的考慮下列型號列表LINQ遞歸查詢返回分層組集合
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>)
但這是生產不正確的結果。
任何人有任何建議或想法?
因此,您從一個平坦的團隊集合開始,並且您想創建一棵樹?我認爲你在這裏需要的不僅僅是LINQ(儘管我會非常感興趣的證明是錯誤的)。當您迭代您的團隊時,您需要構建一棵樹,而不是IGrouping的集合。 –
對不起,是的,應該提到它是一個平坦的團隊名單。 – ChrisO