zoukankan      html  css  js  c++  java
  • 简易文件夹无限级,使用递归重构层级列表


    1
    /// <summary> 2 /// 文件夹实体 3 /// </summary> 4 public class Folder 5 { 6 /// <summary> 7 /// 文件夹ID 8 /// </summary> 9 public int id { get; set; } 10 /// <summary> 11 /// 文件夹名称 12 /// </summary> 13 public string name { get; set; } 14 /// <summary> 15 /// 父级ID 16 /// </summary> 17 public int folder_parent_id { get; set; } 18 }
    
    
     1         /// <summary>
     2         /// 重构文件夹层级列表
     3         /// </summary>
     4         /// <param name="listSource">源数据</param>
     5         /// <param name="pId">父级ID</param>
     6         /// <param name="count">添加元素的次数</param>
     7         /// <param name="levelNum">当前层级</param>
     8         /// <param name="listResult">返回结果集</param>
     9         private void RefactorFolderLevelList(List<Folder> listSource, int pId, int count, List<int> levelNum, List<Folder> listResult)
    10         {
    11             var len_source = listSource.Count();
    12             if (count < len_source)
    13             {
    14                 var tmp_list = listSource.Where(m => m.folder_parent_id == pId);
    15                 var len_tmp_list = tmp_list.Count();
    16                 bool addFlag = true;
    17                 int level = levelNum.Count();
    18                 int i = 0;
    19                 foreach (var item in tmp_list)
    20                 {
    21                     i++;
    22                     item.name = FillString(level, "——") + item.name;
    23                     var model = listResult.Where(m => m.id == item.id).FirstOrDefault();
    24                     if (pId == 0 && model != null)
    25                         continue;
    26                     else
    27                         listResult.Add(item);
    28                     ++count;
    29                     if (listSource.Where(m => m.folder_parent_id == item.id).Count() > 0)
    30                     {
    31                         if (!levelNum.Contains(item.id) && addFlag)
    32                         {
    33                             addFlag = false;
    34                             levelNum.Add(item.id);
    35                         }
    36                         RefactorFolderLevelList(listSource, item.id, count, levelNum, listResult);
    37                     }
    38                     else
    39                     {
    40                         if (i < len_tmp_list)
    41                             continue;
    42                         levelNum = new List<int>();
    43                         RefactorFolderLevelList(listSource, 0, count, levelNum, listResult);
    44                     }
    45                 }
    46             }
    47         }
    48         /// <summary>
    49         /// 字符串填充
    50         /// </summary>
    51         /// <param name="n">填充的次数</param>
    52         /// <param name="str">需要填充的字符串</param>
    53         /// <returns></returns>
    54         private string FillString(int n, string str)
    55         {
    56             StringBuilder ret = new StringBuilder();
    57             for (int i = 0; i < n; i++)
    58             {
    59                 ret.Append(str);
    60             }
    61             return ret.ToString();
    62         }
    效果图:
    
    
    
    
    
    
  • 相关阅读:
    想做的事情
    js学习笔记2(5章操作方法)
    js学习笔记1(变量、作用域、内存)
    输入框去除默认的文字,jquery方法
    同类型元素,只有一个被选中js
    淘宝分类常见---部分显示和全部显示的js效果
    关于游戏提名信息项目的总结
    20174310隋润起网络对抗免考报告
    2019-2020-2 20174310 隋润起《网络对抗技术》Exp9 Web安全基础
    2019-2020-2 20174310隋润起《网络对抗技术》Exp8 Web基础
  • 原文地址:https://www.cnblogs.com/xcjit/p/4147112.html
Copyright © 2011-2022 走看看