最近一直在研究树形结构菜单,无意中让我弄了出来。先上代码:

首先需要这个的一个类

public class Tree
{
public int id { get; set; }
public string address { get; set; }
public int parent_id { get; set; }
public int depth { get; set; }
}

private static List<Tree> listTree = new List<Tree>(); // 定义一个全局的list来存放数据
static void Main(string[] args)
{
//初始化数据
var data = new List<Tree>()
{
new Tree{ id=1, address="安徽", parent_id = 0, depth=1 },
new Tree{id=2, address="江苏", parent_id = 0, depth=1},
new Tree{id=3, address="合肥", parent_id = 1, depth=2},
new Tree{id=4, address="庐阳区", parent_id = 3, depth=3},
new Tree{id=5, address="大杨镇", parent_id = 4, depth=4},
new Tree{id=6, address="南京", parent_id = 2, depth=2},
new Tree{id=7, address="玄武区", parent_id = 6, depth=3},
new Tree{id=8, address="梅园新村街道", parent_id = 7, depth=4},
new Tree{id=9, address="上海", parent_id = 0, depth=1},
new Tree{id=10, address="黄浦区", parent_id = 9, depth=2},
new Tree{id=11, address="外滩", parent_id = 10, depth=3},
new Tree{id=12, address="安庆", parent_id = 1, depth=2}
};

var list = GetSubTree(data, 0);

foreach (var item in list)
{
string space = string.Empty;
if (item.depth != 1)
{
for (var i = 0; i < item.depth; i++)
{
space += " ";
}
}

Console.WriteLine(space + "id={0},address={1},parent_id={2},depth={3}", item.id.ToString(), item.address, item.parent_id, item.depth);
}

}
/// <summary>
/// 组装树形结构数据
/// </summary>
/// <param name="data"></param>
/// <param name="parent_id"></param>
/// <returns></returns>
private static List<Tree> GetSubTree(List<Tree> data, int parent_id)
{
foreach (var item in data)
{
if (item.parent_id == parent_id)
{
listTree.Add(item);
GetSubTree(data, item.id);
}
}
return listTree;
}

执行结果如下:

简简单单,希望大神指点迷津。

c#:无限极树形结构的更多相关文章

  1. YbSoftwareFactory 代码生成插件【十八】:树形结构下的查询排序的数据库设计

    树形结构的排序在中国特色下十分普遍也非常重要,例如常说的五大班子,党委>人大>政府>政协>纪委,每个班子下还有部门,岗位,人员,最终排列的顺序通常需要按权力大小.重要性等进行排 ...

  2. sqlalchemy tree 树形分类 无限极分类的管理。预排序树,左右值树。sqlalchemy-mptt

    简介: 无限极分类是一种比较常见的数据格式,生成组织结构,生成商品分类信息,权限管理当中的细节权限设置,都离不开无限极分类的管理. 常见的有链表式,即有一个Pid指向上级的ID,以此来设置结构.写的时 ...

  3. java中实现无限层级的树形结构

    本文展示了两个实现方法的代码.两个代码的实现方法不同,代码2更为简单. 先看一下最后实现的结果: 最后结果-json 代码1: 实现过程: 1.传入一段json字符串 2.将字符串转换成对象存入节点列 ...

  4. Java编程:将具有父子关系的数据库表数据转换为树形结构,支持无限层级

    在平时的开发工作中,经常遇到这样一个场景,在数据库中存储了具有父子关系的数据,需要将这些数据以树形结构的形式在界面上进行展示.本文的目的是提供了一个通用的编程模型,解决将具有父子关系的数据转换成树形结 ...

  5. 谈一次php无限极分类的案例

    作者:白狼 出处:http://www.manks.top/php_tree_deep.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追 ...

  6. PHP无限极分类生成树方法,无限分级

    你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了.这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了. function g ...

  7. PHP无限极分类实现

    简单版的PHP生成无限极分类代码.其中包括了数据库设计.以及输出分类HTML代码. SQL代码 CREATE TABLE `district` ( `id` int(10) unsigned NOT ...

  8. PHP无限极分类生成树方法

    你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了.这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,整理分享了. function genera ...

  9. 分享一个牛逼的PHP无限极分类生成树方法,巧用引用(转)

    你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了.这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了. function g ...

随机推荐

  1. LCS(Longest Common Subsequence)

    http://blog.csdn.net/zztfj/article/details/6157429 LCS(Longest Common Subsequence) 就是求两个字符串最长公共子串的问题 ...

  2. Java ping 主机 端口

    22:04:08.002 [main] INFO Ping - 目标地址 192.168.1.107 是否可到达:true 22:04:08.006 [main] INFO Ping - 执行命令 p ...

  3. C#在VS2005开发环境中利用异步模式来对一个方法的执行时间进行超时控制

    using System.Threading; using System; namespace ConsoleApplication4 { public class Program { static ...

  4. Devexpress之GridControl显示序列号

    先上图: 操作方法: 1.先设置一下gridview中属性:IndicatorWidth,一般为:40.如下图:(一般可以显示5位数字.如要更长显示,自己测试一下.) 2.找到gridview中的:C ...

  5. Linux常用命令汇总(渐更)

    后台启动jar nohup java -jar xxxxx.jar > xxxx.out 2>&1 & 封禁ip iptables -I INPUT -s 200.194. ...

  6. Spring cloud Eureka 服务治理(搭建服务注册中心)

    服务之类是微服务架构中最为核心的基础模块,它主要用来实现各个微服务实例的自动化注册和发现. 1. 服务注册 在服务治理框架中,通常会构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,将主机. ...

  7. CSS单词换行and断词,你真的完全了解吗

    背景 某天老板在群里反馈,英文单词为什么被截断了? 很显然,这是我们前端的锅,自行背锅.这个问题太简单了,css里加两行属性,分分钟搞定. 开心的提交代码,刷新页面.我擦,怎么还是没有断词?不可能啊! ...

  8. Counting blessings can actually increase happiness and health by reminding us of the good things in life.

    Counting blessings can actually increase happiness and health by reminding us of the good things in ...

  9. jQuery知识重构

    jQuery知识重构 目录: 一.入口函数 1          $(document).ready(function(){}); 2          $(function(){}); jQuery ...

  10. js绑定事件方法:addEventListener的兼容问题

    js的事件绑定方法中,ie只支持attachEvent,而FF和Chrome只支持addEventListener;严格来说:addEventListener只有IE9以上版本的IE浏览器上能够兼容, ...