用递归实现无限级菜单,产品分类,盖楼式评论、留言等功能。

下列代码不能直接使用

CREATE TABLE [dbo].[P_Category](
[Code] [varchar](36) NOT NULL PRIMARY KEY,
[Parent_Code] [varchar](36) NULL,
[Depth] [int] NULL,
[Name] [varchar](50) NULL
)
GO INSERT [dbo].[P_Category] ([Code], [Parent_Code], [Depth], [Name]) VALUES (N'101', N'1', 2, N'木门')
INSERT [dbo].[P_Category] ([Code], [Parent_Code], [Depth], [Name]) VALUES (N'10101', N'101', 3, N'室内木门')
INSERT [dbo].[P_Category] ([Code], [Parent_Code], [Depth], [Name]) VALUES (N'1010101', N'10101', 4, N'A02')
INSERT [dbo].[P_Category] ([Code], [Parent_Code], [Depth], [Name]) VALUES (N'101010101', N'10101', 5, N'A01')
INSERT [dbo].[P_Category] ([Code], [Parent_Code], [Depth], [Name]) VALUES (N'10101010101', N'101010101', 6, N'A0101')
INSERT [dbo].[P_Category] ([Code], [Parent_Code], [Depth], [Name]) VALUES (N'102', N'1', 2, N'B')
INSERT [dbo].[P_Category] ([Code], [Parent_Code], [Depth], [Name]) VALUES (N'10201', N'102', 3, N'B1')
INSERT [dbo].[P_Category] ([Code], [Parent_Code], [Depth], [Name]) VALUES (N'1020101', N'10201', 4, N'B2')

  

private List<Category> CategoryCacheAllList { get; set; }

[Route("")]
public HttpResponseMessage Get()
{
var list = CacheHelper<List<Category>>.GetCache(CategoryAllListCacheKEY);
if (list == null)
{
CategoryCacheAllList = CategoryService.GetCacheList(); //取得数据库里面所有数据
list = new List<Category>();
CategoryJson(list, "1");
CacheHelper<List<Category>>.SetCache(CategoryAllListCacheKEY, list);
}
return Request.CreateResponse(HttpStatusCode.OK, list);
//下面的代码这个没试
//string json = JsonConvert.SerializeObject(categoryList, Formatting.Indented);
//return json;
} /// <summary>
/// 取得兄弟节点
/// </summary>
/// <param name="categoryList"></param>
/// <param name="parentCode"></param>
public void CategoryJson(List<Category> categoryList, string parentCode)
{
var list = CategoryCacheAllList.FindAll(p => p.ParentCode == parentCode);
if (list.Count > 0)
{
foreach (var item in list)
{
CategoryTreeJson(item, item.Code);
categoryList.Add(item);
}
}
} /// <summary>
/// 递归出子对象
/// </summary>
/// <param name="sbCategory"></param>
/// <param name="parentCode"></param>
private void CategoryTreeJson(Category sbCategory, string parentCode)
{
var list = CategoryCacheAllList.FindAll(p => p.ParentCode == parentCode);
if (list.Count > 0)
{
sbCategory.Children = new List<Category>();
foreach (var item in list)
{
CategoryTreeJson(item, item.Code);
sbCategory.Children.Add(item);
}
}
}

  

namespace VipSoft.Base.Core.Entity
{
/// <summary>
/// 产品分类
/// </summary>
[Table("VipSoft_Category")]
public class Category
{
/// <summary>
/// 编码
/// </summary>
[Column(ColumnType.IncrementPrimary, Name = "Code")]
public string Code { get; set; } /// <summary>
/// 父级编码
/// </summary>
[Column(Name = "Parent_Code")]
public string ParentCode { get; set; } /// <summary>
/// 深度
/// </summary>
[Column(Name = "Depth")]
public int? Depth { get; set; } /// <summary>
/// 分类名称
/// </summary>
[Column(Name = "Name")]
public string Name { get; set; } /// <summary>
/// 排序
/// </summary>
[Column(Name = "Sequence")]
public int? Sequence { get; set; } /// <summary>
/// 状态
/// </summary>
[Column(Name = "Status")]
public int? Status { get; set; } /// <summary>
/// 创建时间
/// </summary>
[Column(Name = "Create_Date")]
public DateTime? CreateDate { get; set; } public List<Category> Children { get; set; } }
}

树型结构递归 实体递归 JSON格式的更多相关文章

  1. dzzoffice的树型结构用户管理设计

    在DzzOffice1.1的开发中,针对用户使用群体重新设计了,机构.部门.用户管理应用. 传统OA,企业相关程序,一般是设置机构-设置部门-设置职位-添加用户这样的步骤.每个步骤分为不同的管理界面. ...

  2. JSP中的一个树型结构

    看方力勋的javaWeb,采用左右值来表示树型结构(就是俺门的多级分类)表结构 页面代码 <%@ page language="java" import="java ...

  3. java树型结构的数据展现设计

    在做一个需求管理的页面时,需求的展现是不限层级树型结构,需求下还可以分拆任务,页面要展现的字段有20多个,而且需求采用通用表单设计,db采用大宽表存储,有一百多个字段.目前数据量不大,第一版采用普通的 ...

  4. 20-Ubuntu-文件和目录命令-查看目录树型结构-tree

    tree 以树状图列出当前目录下的文件目录结构 选项 含义 -d 只显示当前目录的子目录树型结构   显示当前目录的子目录和文件树型结构 例: 1.查看文档目录下的子目录和文件树型结构 2.查看文档目 ...

  5. 使用Map辅助拼装树状结构,消除递归调用

    目前菜单或其他树状结构在数据库中的存储,多数是以一个parentid作为关联字段,以一维形式存储.使用时全部查询出来,然后在内存中拼装成树状结构.现在主要涉及的是拼装方法的问题. 一般可以进行 递归调 ...

  6. Java实现树形结构的数据转Json格式

    在项目中难免会用到树形结构,毕竟这是一种常用的组织架构.楼主这里整理了两个实现的版本,可以直接拿来使用,非常方便. 楼主没有单独建项目,直接在以前的一个Demo上实现的.第一种,看下面代码: pack ...

  7. web api+递归树型结构

    using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Ne ...

  8. SQL Server 通过“with as”方法查询树型结构

    一.with as 公用表表达式 类似VIEW,但是不并没有创建对象,WITH  AS 公用表表达式不创建对象,只能被后随的SELECT语句,其作用: 1. 实现递归查询(树形结构) 2. 可以在一个 ...

  9. Delphi实现树型结构

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

随机推荐

  1. C# 两个时间相减 返回 对应天时分秒

    "; //string sdsdsdsds = "1"; , '); //不足2位 就补充0 足2位 就不变 DateTime dts1 = DateTime.Now; ...

  2. spring事物要知道

    事物隔离级别和传播行为: ####   1.隔离级别( isolation ) 隔离级别是指若干个并发事物之间的隔离程度,与我们开发时候主要相关的场景包括:脏读取.重复读.幻读. 我们可以看 org. ...

  3. MySql 按周/月/日统计数据的方法

    知识关键词:DATE_FORMAT  select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count from tc_case gro ...

  4. Python 爬虫 使用正则去掉不想要的网页元素

    在做爬虫的时候,我们总是不想去看到网页的注释,或者是网页的一些其他元素,有没有好的办法去掉他们呢? 例如:下面的问题 第一种情况<ahref="http://artso.artron. ...

  5. 在java项目中使用 Lombok 及可能问题

    一.Maven项目使用步骤一般包含两步,1)引入依赖 2)特定的 IDE 引入对应的插件 1)在POM中引入依赖 <!-- https://mvnrepository.com/artifact/ ...

  6. flowable学习笔记-简单流程概念介绍

    1 Flowable process engine允许我们创建ProcessEngine 对象和使用 Flowable 的API ProcessEngine是线程安全的,他是通过 ProcessEng ...

  7. PHP百分号转小数,php 小数转换百分数函数

    PHP百分号转小数: <?php $a = "20.544545%"; echo (float)$a/100; ?> php 小数转换百分数函数: function x ...

  8. 数据仓库和ETL建设

    这个是Ralph kimball ETL的书籍,其中第10章主要讲如何管理数据仓库团队,ETL团队是属于数据仓库团队的:第一章和第二章是概况性的介绍,强烈建议大家都看下1/2/10章,对于大家形成对数 ...

  9. 使用mysql innodb 使用5.7的json类型遇到的坑和解决办法

    ---------------------------------------------- #查询JSON的某个字段 select data -> '$.Host' from temp #创建 ...

  10. php分享十二:分组取前N记录

    经常看到问题,如何取出每组的前N条记录 http://blog.csdn.net/acmain_chm/article/details/4126306 问题:有表 如下,要求取出各班前两名(允许并列第 ...