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查询?所谓动态,主要的意思在于查询的条件可以随机组合,动态添加,而不是固定的写法.这个在很多系统开发过程中是非常有用的. 我这里给 ...
随机推荐
- python框架之django
python框架之django 本节内容 web框架 mvc和mtv模式 django流程和命令 django URL django views django temple django models ...
- UOJ #58 【WC2013】 糖果公园
题目链接:糖果公园 听说这是一道树上莫队的入门题,于是我就去写了--顺便复习了一下莫队的各种姿势. 首先,我们要在树上使用莫队,那么就需要像序列一样给树分块.这个分块的过程就是王室联邦这道题(vfle ...
- CSS系列——前端进阶之路:初涉Less
前言:最近帮一个朋友解决点问题,在查看组件源码的时候涉及到了less语法,这可难倒博主了.没办法,既然用到就要学呗,谁让咱是无所不能的程序猿呢!所以今天来学习下Less,算是笔记,也希望给初学less ...
- C# 提交网页请求时出现如下错误: System.Net.WebException: 操作超时
原因一: 连接超时时间 Timeout 以及写入Post数据超时时间 ReadWriteTimeout 设置得太短,一般要设置大于6000ms. 原因二: Expect100Continue 属性的值 ...
- 移动端开发viewport深入理解(转)
一.viewport的概念 移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,就是浏览器上用来显示网页的那部分区域,但viewport不局限于浏览器可视区域 的大小,它 ...
- Knockout.js 组件
Knockout.js是一个基于MVVM模式的轻量级的前端框架,有多轻?根据官网上面显示的最新版本v3.4.0,仅22kb.能够友好地处理数据模型和界面DOM的绑定,最重要的是,它的绑定是双向的,也就 ...
- jQuery中的100个技巧
1.当document文档就绪时执行JavaScript代码. 我们为什么使用jQuery库呢?原因之一就在于我们可以使jQuery代码在各种不同的浏览器和存在bug的浏览器上完美运行. < ...
- 3sum问题的解决
其实一开始想错了,把这个问题想难了,导致没有思路,现在好了很多. 题目: Given an array S of n integers, are there elements a, b, c in S ...
- vuex(1.0版本写法)
Vuex 是一个专门为 Vue.js 应用所设计的集中式状态管理架构. 官方文档:http://vuex.vuejs.org/zh-cn/ 2.0和1.0都能在此找到 每一个 Vuex 应用的核心就 ...
- .net 项目生成时自动更新版本号
https://www.codeproject.com/articles/31236/how-to-update-assembly-version-number-automaticall Exampl ...