我有一个嵌套评论列表,它们基本上形成了一个树。
//Non-Relevant properties (Like Body, Creator etc) excluded
internal class Comment
{
public int ID { get; set; }
public int ItemID { get; set; }
public int ParentItemID { get; set; }
public List<Comment> ChildComments { get; set; }
}
首先,我Posts
从数据库中获取列表,然后获取所有Comments where ItemID == Posts[all].id
我想遍历一个平面列表并创建一个嵌套或树列表。
它是这样的:
如果ParentItemID == 0
,那么我们有一个顶级评论。如果ParentItemID > 0
我们需要匹配ParentItemID
一个评论ID
,并将子评论添加到父评论列表中。
我被困的地方是,我过去只使用递归来导航文件和文件夹。这不允许我实例化一个集合并通过后续递归保留它。
在递归之外实例化列表似乎也很愚蠢,然后每次我想添加一个项目时循环遍历所有项目。
我确信这样做有一个很好的可靠模式,我只是找不到它。