zoukankan      html  css  js  c++  java
  • C# .NetCore简单实现无限递归的功能

    1:在实际开发中,我们会经常使用到无限递归的情况,如菜单,父子级等的情况

    2:Code

     1 using System;
     2 using System.Collections.Generic;
     3 using ConsoleApp1.Models;
     4 using System.Linq;
     5 using Newtonsoft.Json;
     6 namespace ConsoleApp1
     7 {
     8     class Program
     9     {
    10         static void Main(string[] args)
    11         {
    12             var allData = GetListData();
    13             var parentNode = allData.Where(p => p.PParentId == 0).ToList();
    14             List<PersonModel> tree = new List<PersonModel>();
    15             foreach (var item in parentNode)
    16             {
    17                 PersonModel p1 = new PersonModel { Children = new List<PersonModel> { } };
    18                 int _id = item.ID;
    19                 p1.ID = _id;
    20                 p1.Pname = item.Pname;
    21                 p1.Age = item.Age;
    22                 p1.PParentId = item.PParentId;
    23                 GetNewNodes(allData, p1);
    24                 tree.Add(p1);
    25             }
    26             string jsonTree = JsonConvert.SerializeObject(tree, Formatting.Indented);
    27             Console.WriteLine(jsonTree);
    28             Console.ReadKey();
    29         }
    30 
    31         static void GetNewNodes(List<PersonModel> all, PersonModel curItem)
    32         {
    33             var subItems = all.Where(c => c.PParentId == curItem.ID).ToList();
    34             curItem.Children = new List<PersonModel>();
    35             curItem.Children.AddRange(subItems);
    36             foreach (var subItem in subItems)
    37             {
    38                 GetNewNodes(all, subItem);
    39             }
    40         }
    41         static List<PersonModel> GetListData()
    42         {
    43             return new List<PersonModel> {
    44                     new PersonModel{ID=1001,Age=68,Pname="QQ1",PParentId=0 },
    45                     new PersonModel{ID=1002,Age=78,Pname="ww",PParentId=0 },
    46                     new PersonModel{ID=1003,Age=67,Pname="dd",PParentId=0 },
    47                     new PersonModel{ID=1004,Age=88,Pname="ff",PParentId=0 },
    48 
    49                     new PersonModel{ID=1005,Age=18,Pname="gg",PParentId=1001},
    50                     new PersonModel{ID=1006,Age=16,Pname="cc",PParentId=1003},
    51                     new PersonModel{ID=1007,Age=17,Pname="aa",PParentId=1006},
    52                     new PersonModel{ID=1008,Age=19,Pname="tt",PParentId=1007},
    53                     new PersonModel{ID=1009,Age=20,Pname="ii",PParentId=1004},
    54                      new PersonModel{ID=1010,Age=22,Pname="ggf",PParentId=1003}
    55             };
    56         }
    57     }
    58 }

    3:测试ok截图

    如有疑问或者错误的地方,请跟帖,本人会第一时间答复以及相互学习,谢谢!个人会不断的上传自己的学习心得!

    我的博客园地址:https://www.cnblogs.com/Fengge518

  • 相关阅读:
    SQL中常用的数据类型及简介
    静态方法与非静态方法
    遍历多维数组
    遍历一个三维数组
    冒泡排序-方法2
    关于二分查找分
    冒泡排列-——方法1
    AngularJS 循环查询数组
    AngularJs 指令
    给定一个年月值,返回上个年月值,格式为:YYYY.MM string类型
  • 原文地址:https://www.cnblogs.com/Fengge518/p/14733584.html
Copyright © 2011-2022 走看看