2016-03-19 8 views
0


ich die folgende Klasse haben:Bestellung eines C# Liste von Displayorder und Geschwister

public class Forum 
{ 
    [Key] 
    public Int32 Id { get; set; } 

    public String Title { get; set; } 

    public String Description { get; set; } 

    public Int32 DisplayOrder { get; set; } 

    public Boolean IsLocked { get; set; } 

    public Int32? ParentForumId { get; set; } 

    public virtual Forum ParentForum { get; set; } 

    public virtual ICollection<Forum> Subforums { get; set; } 
} 

Ich bin ein List<Forum> bekommen. Ich suche nach einer Möglichkeit, es in einer Ansicht richtig anzuzeigen, also richte ich ein Modell ein, das die Elemente in eine richtige Reihenfolge bringen soll, aber ich weiß nicht, wo ich anfangen soll.

Die Artikel müssen von displayorder und children bestellt werden. Beispiel:
Forum 1
- Subforum 1
---- Subsubforum 1
- Subforum 2
- Subforum 3
Subsubforum ---- ---- 1
Subsubforum 2
usw.

+0

Mögliches Duplikat von [Wie bestelle ich eine Sammlung und ihre Untersammlung mit LINQ?] (Http://stackoverflow.com/questions/4455695/how-to-order-a-collection-and-its-subcollection-using- linq) – Szeki

+0

Ich könnte etwas hier @stuartd fehlen, aber ich sehe nicht, wie das helfen würde. –

Antwort

0

Angenommen, Sie haben eine Liste von Forum Objekten ohne Hierarchie. Übergeben Sie es einfach an Reorder Methode.

List<Forum> FormHierarchy(List<Forum> allForums) { 
    foreach(var forum in allForums) 
     forum.Subforums = allForums.Where(x => x.ParentForumId == forum.Id) 
      .OrderBy(x => x.DisplayOrder).ToList(); 
    return allForums.Where(x => !x.ParentForumId.HasValue) 
     .OrderBy(x => x.DisplayOrder).ToList(); 
} 

Nach Reorder wird eine Liste der Stamm Foren ausgeführt werden, die nicht über alle Eltern zurückgegeben.

+0

Unterforen ist aufgrund von Zirkelreferenzen leer. –

+0

@Angelika S Michel, du hast es noch nicht extrahiert, oder? –

+0

Extrahiert was? Ich habe eine Liste von Foren ohne die virtuellen Eigenschaften. –

Verwandte Themen