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

下列代码不能直接使用

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. webpack window dev-server配置

    1.安装webpack dev-server npm install --save-dev webpack webpack-dev-server 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  2. magento登陆

    magento判断用户登录 Magento 登陆之后返回登录之前的页面 magento 在登陆后一般会自动跳转到 My Account 页面 但是经常会有需求 就是登陆自动跳转到 之前的页面里面 工具 ...

  3. Paros 网络抓包工具

    1.Paros 简介 Paros 是一款数据抓包工具. 官网下载地址 Paros 其它下载地址 Paros v3.2.13 for Mac,密码:e4hk. 2.使用方法 2.1 打开 Paros 打 ...

  4. 《JAVA与模式》之原型模式(转载)

    原型模式其实就是java的拷贝机制 原文出处:http://blog.csdn.net/zhengzhb/article/details/7393528   定义:用原型实例指定创建对象的种类,并通过 ...

  5. GANS 资料

    https://blog.csdn.net/a312863063/article/details/83512870 目 录第一章 初步了解GANs 3 1. 生成模型与判别模型. 3 2. 对抗网络思 ...

  6. 安装CDH5时出错 5.68.168.192.in-addr.arpa domain name pointer bogon.

    这个是因为使用的DNS是联通的server,联通会将所有保留的网络地址RFC1918( http://tools.ietf.org/html/rfc1918)都指向"bogon" ...

  7. Windows Mobile入门

    转自 http://www.cnblogs.com/peterzb/archive/2009/05/12/1455256.html [准备篇]        最近安排做手机视频监控方面开发,这个对我来 ...

  8. android辅助开发工具包介绍

    辅助开发工具包(ADK)是为硬件制造商和业余爱好者准备的参考实现.硬件制造商和业余爱好者可以使用此工具包作为开发Android辅助设备的起点.每一个ADK发行版都将提供源代码和硬件规格,以使整个辅助设 ...

  9. Android设计元素-操作栏

    原文链接:http://android.eoe.cn/topic/android_sdk 操作栏 - Action Bar “操作栏”对于 Android 应用来说是最重要的设计元素.它通常在应用运行 ...

  10. LVL类及接口使用介绍(License Verification Library )

    原文:http://android.eoe.cn/topic/android_sdk LVL Classes and Interfaces-LVL类和接口 Table 1 lists all of t ...