把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. (双指针) leetcode 485. Max Consecutive Ones

    Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1, ...

  2. JAVA中循环删除list中元素的方法总结【转】

    印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末 ...

  3. Windows 10中Oracle数据库导出到Access数据库(MDB)

    本篇博文简单介绍将Oracle数据库中表导出到Access数据库(主要是MDB格式)的方法.主要有三种,分别是PL/SQL.ESFDatabaseMigrationToolkit及ODBC. PL/S ...

  4. 神奇的 UNICODE 字符 : U+202E

  5. 洛谷红名+AC150祭

    emmmm没什么想说的,随便放个图吧23333(逃~

  6. 蓝桥杯入门训练-Fibonacci数列

    刚刚开始刷题的时候就栽了个大跟头,稍微记一下...... 一开始不是很理解:“我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数 ...

  7. mysql将表数据导出为txt或csv文件

    语法:select 字段 from 表名 into outfile 路径 示例txt:select * from stu_class into outfile './stu_class.text'; ...

  8. 推荐.Net、C# 逆向反编译四大工具利器

    转自:https://blog.csdn.net/kongwei521/article/details/54927689 在项目开发过程中,估计也有人和我遇到过同样的经历:运行环境出现了重大Bug亟需 ...

  9. 后端视角下的前端框架之Vue.js初探

    背景 作为常年搞后端的自己来说,除了多年前学习的一点关于HTML的皮毛,对现在的前端技术栈可谓是一窍不通.但是因为最近在做的内部业务全链路监控系统,负责前端的同事做到一半去搞别的项目了,为了把项目落地 ...

  10. JAVA进阶14

    间歇性混吃等死,持续性踌躇满志系列-------------第14天 1.线程的加入 package code0328; import javax.swing.*; import java.awt.* ...