hiyerarşik kümesi döndürmek içinLINQ özyinelemeli sorgu aşağıdaki modellerin listesi verildiğinde grupların
public class Team
{
public int TeamId { get; set; }
public int ParentTeamId { get; set; }
}
Bu
gibi görünen bir hiyerarşi almak için beni sağlayacak bir özyinelemeli linq sorgusu yazmaya çalışıyorumTeam
ChildTeams
Team
Team
ChildTeams
Birçok yaklaşımı denedim ve birçok benzer soru gördüm, ancak bunların hiçbiri özellikle sorunu çözmeme yardımcı oldu.
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});
}
ben ToGrouping(IEnumerable<TeamGrouping>)
içine ilk ToGrouping(IEnumerable<Team>)
ve ardından sonraki dönen gruba takımların listesini geçerdi ama bu yanlış sonuçlar üretiyor: Denedim son girişim bu doğrultuda gitti.
Herhangi bir tavsiyesi veya fikri olan var mı?
Yani düz bir Ekip koleksiyonuyla başlıyorsunuz ve bir ağaç oluşturmak mı istiyorsunuz? Bence burada sadece LINQ'dan daha fazlasına ihtiyacınız olacak (yine de yanlış olduğum için çok ilgilenecektim). Ekip koleksiyonunuzda yinelediğinizde, bir ağaç inşa etmeniz gerekecek, bir grup s grubunun değil. –
Üzgünüm, evet, bu takımların düz bir listesi olduğunu söylemeliydim. – ChrisO