我有以下课程:
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
等
答案 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
后,将返回没有任何父级的根论坛列表。