按displayorder和兄弟姐妹订购c#列表

时间:2016-03-19 10:58:12

标签: c#


我有以下课程:

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; }
}

我得到List<Forum>。我正在寻找一种方法在视图中正确显示它,所以我建立了一个模型,应该把项目放在正确的顺序,但我不知道从哪里开始。

物品需要由showorder和儿童订购。例如:
论坛1 - 分论坛1 ----子资产1 - 子论坛2 - 子论坛3 ----子资产1 ----子资产2 等

1 个答案:

答案 0 :(得分:0)

假设您有一个没有任何层次结构的Forum个对象列表。只需将其传递给Reorder方法。

 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();
 }

执行Reorder后,将返回没有任何父级的根论坛列表。

相关问题