选择“递归列表”

本文关键字:递归列表 列表 递归 选择 | 更新日期: 2023-09-27 18:32:27

我有一个数据表,其中包含有关目录树的信息 - 文件夹和文档该表包括列 ID 和列父 ID

+----+--------+-----------+---------+
| id | parent | is_folder | details |
+----+--------+-----------+---------+
|  1 |        | TRUE      | …       |
|  2 |      1 | TRUE      | …       |
|  3 |      1 | TRUE      | …       |
|  4 |      1 | FALSE     | …       |
|  5 |      2 | TRUE      | …       |
|  6 |      5 | FALSE     | …       |
|  7 |      5 | TRUE      | …       |
|  8 |      7 | FALSE     | …       |
|  9 |      3 | FALSE     | …       |
| 10 |      3 | FALSE     | …       |
+----+--------+-----------+---------+

我想使这个列表将被构建为递归目录树

它的回归IEnumerable<item>

      public class item
    {
        public bool isFolder { get; set; } 
        public int id { get; set; }    
        public int parentId { get; set; }   //should???
        public string  details { get; set; }
        public IEnumerable<item>  children { get; set; }  
    }

选择“递归列表”

往常一样为每行创建一个项目。然后,执行如下操作来创建子项:

foreach(var item in items)
    item.children = items.Where(x => x.parentId == item.id);