把List列表结构 转换成树形结构
 /// <summary>
/// 构造树形Json
/// </summary>
public static class TreeJson
{ /// <summary>
/// 转换树Json
/// </summary>
/// <param name="list">数据源</param>
/// <param name="parentId">父节点</param>
/// <returns></returns>
public static string ZTreeJson(this List<TreeEntity> list, string parentId = null) //GetDepartmentTree等方法会给parentId赋值的是null,所以这里的parentId不能写""
{
StringBuilder strJson = new StringBuilder();
List<TreeEntity> item = list.FindAll(t => t.parentId == parentId);
strJson.Append("[");
if (item.Count > )
{
foreach (TreeEntity entity in item)
{
strJson.Append("{");
strJson.Append("\"id\":\"" + entity.id + "\",");
if (!string.IsNullOrEmpty(entity.text))
{
strJson.Append("\"name\":\"" + entity.text.Replace("&nbsp;", "") + "\",");
}
if (!string.IsNullOrEmpty(entity.Attribute))
{
strJson.Append("\"" + entity.Attribute + "\":\"" + entity.AttributeValue + "\",");
}
if (!string.IsNullOrEmpty(entity.AttributeA))
{
strJson.Append("\"" + entity.AttributeA + "\":\"" + entity.AttributeValueA + "\",");
}
if (!string.IsNullOrEmpty(entity.AttributeB))
{
strJson.Append("\"" + entity.AttributeB + "\":\"" + entity.AttributeValueB + "\",");
}
if (!string.IsNullOrEmpty(entity.AttributeC))
{
strJson.Append("\"" + entity.AttributeC + "\":\"" + entity.AttributeValueC + "\",");
}
if (entity.checkstate != null)
{
strJson.Append("\"checked\":" + entity.checkstate + ",");
}
strJson.Append("\"showcheck\":" + entity.showcheck.ToString().ToLower() + ",");
strJson.Append("\"open\":" + entity.isexpand.ToString().ToLower() + ",");
strJson.Append("\"isParent\":" + entity.hasChildren.ToString().ToLower() + ",");
strJson.Append("\"children\":" + ZTreeJson(list, entity.id) + "");
strJson.Append("},");
}
strJson = strJson.Remove(strJson.Length - , );
}
strJson.Append("]");
return strJson.ToString();
} /// <summary>
/// 转换树Json
/// </summary>
/// <param name="list">数据源</param>
/// <param name="ParentId">父节点</param>
/// <returns></returns>
public static string TreeToJson(this List<TreeEntity> list, string ParentId = null) //GetDepartmentTree等方法会给parentId赋值的是null,所以这里的parentId不能写""
{
StringBuilder strJson = new StringBuilder();
List<TreeEntity> item = list.FindAll(t => t.parentId == ParentId);
strJson.Append("[");
if (item.Count > )
{
foreach (TreeEntity entity in item)
{
strJson.Append("{");
strJson.Append("\"id\":\"" + entity.id + "\",");
if (!string.IsNullOrEmpty(entity.text))
{
strJson.Append("\"text\":\"" + entity.text.Replace("&nbsp;", "") + "\",");
}
if (!string.IsNullOrEmpty(entity.value))
{
strJson.Append("\"value\":\"" + entity.value + "\",");
} if (!string.IsNullOrEmpty(entity.Attribute))
{
strJson.Append("\"" + entity.Attribute + "\":\"" + entity.AttributeValue + "\",");
}
if (!string.IsNullOrEmpty(entity.AttributeA))
{
strJson.Append("\"" + entity.AttributeA + "\":\"" + entity.AttributeValueA + "\",");
}
if (entity.title != null && !string.IsNullOrEmpty(entity.title.Replace("&nbsp;", "")))
{
strJson.Append("\"title\":\"" + entity.title.Replace("&nbsp;", "") + "\",");
}
if (entity.img != null && !string.IsNullOrEmpty(entity.img.Replace("&nbsp;", "")))
{
strJson.Append("\"img\":\"" + entity.img.Replace("&nbsp;", "") + "\",");
}
if (entity.checkstate != null)
{
strJson.Append("\"checkstate\":" + entity.checkstate + ",");
}
//if (entity.parentId != null)
//{
// strJson.Append("\"parentnodes\":\"" + entity.parentId + "\",");
//}
strJson.Append("\"parentnodes\":\"" + entity.parentId + "\",");
if (entity.Level != null)
{
strJson.Append("\"Level\":" + entity.Level + ",");
}
strJson.Append("\"showcheck\":" + entity.showcheck.ToString().ToLower() + ",");
strJson.Append("\"isexpand\":" + entity.isexpand.ToString().ToLower() + ",");
if (entity.complete == true)
{
strJson.Append("\"complete\":" + entity.complete.ToString().ToLower() + ",");
}
strJson.Append("\"hasChildren\":" + entity.hasChildren.ToString().ToLower() + ",");
strJson.Append("\"ChildNodes\":" + TreeToJson(list, entity.id) + "");
strJson.Append("},");
}
strJson = strJson.Remove(strJson.Length - , );
}
strJson.Append("]");
return strJson.ToString();
}
}

c# List列表数据转换成树形结构的更多相关文章

  1. 使用js将后台返回的数据转换成树形结构

    将类似如下数据转换成树形的数据: [ { id: 1, name: '1', }, { id: 2, name: '1-1', parentId: 1 }, { id: 3, name: '1-1-1 ...

  2. javascript将平行的拥有上下级关系的数据转换成树形结构

    转换函数 var Littlehow = {}; /** * littlehow 2019-05-15 * 平行数据树形转换器 * @type {{format: tree.format, sort: ...

  3. js将有父子关系的数据转换成树形结构数据

    js将有父子关系的数据转换成树形结构数据 比如如下基本数据: let allDatas = [ { id: 3, name: 'bbbb', parendId: 1 }, { id: 2, name: ...

  4. 记一则 Lambda内递归调用方法将集合对象转换成树形结构

    public dynamic GetDepartments(string labID) { List<int> usedIDs = new List<int>(); //缓存已 ...

  5. Word排版成树形结构技巧

    初始文字 A A1 A2 B1 B1 B2 C C1 希望效果 关健设置

  6. dom4j 解析字符串成树形结构

    引入maven依赖: <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artif ...

  7. Java数据封装成树形结构,多级

    参考地址:https://blog.csdn.net/chendu500qiang/article/details/91493147 1.实体类 @data public class PublishS ...

  8. idea目录结构子目录在父目录后面跟着改成树形结构

    1.点击项目窗口的设置按钮 2.取消Compact Middle Packages选项的对勾即可

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

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

随机推荐

  1. 升级AndroidStudio3.4问题汇总

    1.Could not get unknown property 'bootClasspath' for object of type org.gradle.api.tasks.compile.Com ...

  2. Windows下U盘管理程序

    一个操作系统的作业,生成的程序需要使用管理员权限运行,参考了很多网上的代码,如果打开错误,请修改字符集为使用多字节字符集,并且调整为release模式. 作业的内容如下: 任务操作系统API应用体验与 ...

  3. 深度学习中优化【Normalization】

    深度学习中优化操作: dropout l1, l2正则化 momentum normalization 1.为什么Normalization?     深度神经网络模型的训练为什么会很困难?其中一个重 ...

  4. JGUI源码:Tip实现(14)

    tip是当鼠标放到控件上显示的提示文本,下面说下实现思路方法一: 使用hover:before,hover:after组合一个三角符号和一个圆角矩形实现,以右三角为例 .jgui-tip:after ...

  5. ASP.NET后台调用API方法

    /// <summary> /// 调用API POST请求与获取结果 /// </summary> ///URL 与 JSON串 public static string H ...

  6. jQuery中哪几种选择器

    基本选择器:直接根据id,css类名,元素名返回dom元素: 层次选择器:也叫路径选择器: $("div span") 选取<div>里的所有<span>元 ...

  7. Eclipse 设置生成带有属性注释的getter/setter方法

    1.  在开发中,一般类注释常注释在字段上面.但eclipse工具自动生成的getter和setter方法是没有注释的,而且还需要自己手动添加,这样比较麻烦.下面介绍如何通过修改eclipse的jar ...

  8. jmeter和jdk的安装教程

    jmeter和jdk的安装教程 1:先下载安装jdk并且配置环境变量,配置环境变量的步骤如下: 右击计算机图标--点击属性--点击高级系统设置--点击环境变量后添加jdk的环境变量 a.系统变量→新建 ...

  9. babel-polyfill的几种使用方式

    前言 preset与plugin的关系: preset中已经包含了一组用来转换ES6+的语法的插件,如果只使用少数新特性而非大多数新特性,可以不使用preset而只使用对应的转换插件 babel默认只 ...

  10. 解析查询 queryString 请求参数的函数

    quety string 请求参数 本质上可以理解为一种序列化的格式,与 json 类似,它是一种字典类型的容器,里面可以保存键值对(key-value pair).只不过 querystring 这 ...