C# 构建动态树
public class Tree
{
public Guid Id { get; set; }
public string Url { get; set; }
public Guid? ParentId { get; set; }
public string MenuName { get; set; }
}
public static string GetTree(IList<Tree> treeList, Guid? parentId, string name)
{
string menuName = "";
List<Tree> treeMenu = treeMenu = treeList.Where(o => o.ParentId == parentId).ToList(); if (parentId != null)
{
menuName = treeList.SingleOrDefault(o => o.Id == parentId).MenuName.ToString();
}
if (treeMenu.Count > )
{
string html = (parentId == null ? "" : String.Format("<a>{0}</a>", name)) + "<ul>";
foreach (var item in treeMenu)
{
string tmp = GetTree(treeList, item.Id, item.MenuName);
html += String.Format("<li>{0}</li>", tmp);
}
html += "</ul>";
return html;
}
else
{
return string.Format("<li>最子级节点:{0}</li>", menuName);
}
}
List<Tree> treeList = new List<Tree>
{
new Tree{ Id=Guid.Parse("267f843a-685d-48ee-aa74-a383fd104320"),ParentId=null,MenuName="商户管理",Url="/Home"},
new Tree{ Id=Guid.Parse("dc8bfae4-ad6f-48ac-878b-62174d5f7ca1"),ParentId=Guid.Parse("267f843a-685d-48ee-aa74-a383fd104320"),MenuName="商户信息",Url="/User"},
new Tree{ Id=Guid.Parse("3f090619-ce8b-4995-8455-bbafb70f60f3"),ParentId=Guid.Parse("dc8bfae4-ad6f-48ac-878b-62174d5f7ca1"),MenuName="添加用户",Url="/User/Add"},
new Tree{ Id=Guid.Parse("417bbebf-35da-4c7d-9610-6598d2a2cba4"),ParentId=Guid.Parse("dc8bfae4-ad6f-48ac-878b-62174d5f7ca1"),MenuName="删除用户",Url="/User/Del"},
new Tree{ Id=Guid.Parse("05adfa1c-f2f8-46fc-89bb-8519be2bca62"),ParentId=Guid.Parse("dc8bfae4-ad6f-48ac-878b-62174d5f7ca1"),MenuName="查询用户",Url="/User/Sel"},
new Tree{ Id=Guid.Parse("66576099-947e-44f0-86dc-921827e48307"),ParentId=Guid.Parse("dc8bfae4-ad6f-48ac-878b-62174d5f7ca1"),MenuName="修改用户",Url="/User/Edit"},
};
Console.WriteLine(GetTree(treeList, null, ""));
C# 构建动态树的更多相关文章
- Lind.DDD.ExpressionExtensions动态构建表达式树,实现对数据集的权限控制
回到目录 Lind.DDD框架里提出了对数据集的控制,某些权限的用户为某些表添加某些数据集的权限,具体实现是在一张表中存储用户ID,表名,检索字段,检索值和检索操作符,然后用户登陆后,通过自己权限来构 ...
- C#动态构建表达式树(三)——表达式的组合
C#动态构建表达式树(三)--表达式的组合 前言 在筛选数据的过程中,可能会有这样的情况:有一些查询条件是公共的,但是根据具体的传入参数可能需要再额外增加一个条件.对于这种问题一般有两种方法: a. ...
- C# 动态构建表达式树(二)——构建 Select 和 GroupBy 的表达式
C# 动态构建表达式树(二)--构建 Select 和 GroupBy 的表达式 前言 在上篇中写了表达式的基本使用,为 Where 方法动态构建了表达式.在这篇中会写如何为 Select 和 Gro ...
- C# 动态构建表达式树(一)—— 构建 Where 的 Lambda 表达式
C# 动态构建表达式树(一)-- 构建 Where 的 Lambda 表达式 前言 记得之前同事在做筛选功能的时候提出过一个问题:如果用户传入的条件数量不确定,条件的内容也不确定(大于.小于和等于), ...
- luogu5212/bzoj2555 substring(后缀自动机+动态树)
对字符串构建一个后缀自动机. 每次查询的就是在转移边上得到节点的parent树中后缀节点数量. 由于强制在线,可以用动态树维护后缀自动机parent树的子树和. 注意一个玄学的优化:每次在执行连边操作 ...
- 点分治Day2 动态树分治
蒟蒻Ez3real冬令营爆炸之后滚回来更新blog... 我们看一道题 bzoj3924 ZJOI2015D1T1 幻想乡战略游戏 给一棵$n$个点的树$(n \leqslant 150000)$ 点 ...
- 如何利用FineReport制作动态树报表
在对数据字段进行分类管理时,利用动态树折叠数据是一个很好的方法,也就是点击数据前面的加号才展开对应下面的数据,如下图.那这样的效果在制作报表时该如何实现呢? 下面以报表工具FineReport为例介绍 ...
- 动态树之LCT(link-cut tree)讲解
动态树是一类要求维护森林的连通性的题的总称,这类问题要求维护某个点到根的某些数据,支持树的切分,合并,以及对子树的某些操作.其中解决这一问题的某些简化版(不包括对子树的操作)的基础数据结构就是LCT( ...
- 使用Expression Tree构建动态LINQ查询
这篇文章介绍一个有意思的话题,也是经常被人问到的:如何构建动态LINQ查询?所谓动态,主要的意思在于查询的条件可以随机组合,动态添加,而不是固定的写法.这个在很多系统开发过程中是非常有用的. 我这里给 ...
随机推荐
- Java8 jvm参数
jmap输出 [tomcat@n01 ~]$ /opt/java/jdk1..0_101/bin/jmap -heap Attaching to process ID , please wait... ...
- 给织梦添加英文栏目标题在chanel标签中调用
网上很多添加英文栏目标题的方法,大家自己去百度一下就好,但是修改之后在chanel标签中是调用不了的,那么解决办法如下: 想要在channel 中使用,例如: {dede:channel type=' ...
- 3sum问题的解决
其实一开始想错了,把这个问题想难了,导致没有思路,现在好了很多. 题目: Given an array S of n integers, are there elements a, b, c in S ...
- 一个解析json串并组装echarts的option的函数解析
缘起: 在组装echart页面的时候,遇到这样一个问题,它是一个需要在循环内层的时候,同时循环外层,在内层循环中就要将外层获取的值存入,导致了一种纠缠状态,费了老劲儿,终于得到如下解决.记录之,绿色为 ...
- 微信Api分享
这些都是以前积累的东西,有很多都是参考了别人的,都忘记出处了,请大家谅解.参考微信开发者平台 https://open.weixin.qq.com/cgi-bin/showdocument?actio ...
- java--面向对象---访问属性
<第一节> private--只能用于成员变量和成员函数(限制于类而不是对象),即只能在本类中访问被定义为private 的变量 public-- protected-- <第二节& ...
- Android中利用AIDL机制调用远程服务
服务端: //CalculateInterface.aidl package com.itheima.aidl.calculate; interface CalculateInterface { do ...
- druid连接池获取不到连接的一种情况
数据源一开始配置: jdbc.initialSize=1jdbc.minIdle=1jdbc.maxActive=5 程序运行一段时间后,执行查询抛如下异常: exception=org.mybati ...
- Network Basic Commands Summary
Network Basic Commands Summary set or modify hostname a) temporary ways hostname NEW_HOSTNAME, b ...
- thinkphp访问不存在的模块或者方法跳转到404页面
使用的thinkphp 版本是3.2.0, 在config.php中配置 404地址,即可: 'TMPL_EXCEPTION_FILE' => './Application/Home/View/ ...