1. List列表结构 转换成树形结构
  1. /// <summary>
  2. /// 构造树形Json
  3. /// </summary>
  4. public static class TreeJson
  5. {
  6.  
  7. /// <summary>
  8. /// 转换树Json
  9. /// </summary>
  10. /// <param name="list">数据源</param>
  11. /// <param name="parentId">父节点</param>
  12. /// <returns></returns>
  13. public static string ZTreeJson(this List<TreeEntity> list, string parentId = null) //GetDepartmentTree等方法会给parentId赋值的是null,所以这里的parentId不能写""
  14. {
  15. StringBuilder strJson = new StringBuilder();
  16. List<TreeEntity> item = list.FindAll(t => t.parentId == parentId);
  17. strJson.Append("[");
  18. if (item.Count > )
  19. {
  20. foreach (TreeEntity entity in item)
  21. {
  22. strJson.Append("{");
  23. strJson.Append("\"id\":\"" + entity.id + "\",");
  24. if (!string.IsNullOrEmpty(entity.text))
  25. {
  26. strJson.Append("\"name\":\"" + entity.text.Replace("&nbsp;", "") + "\",");
  27. }
  28. if (!string.IsNullOrEmpty(entity.Attribute))
  29. {
  30. strJson.Append("\"" + entity.Attribute + "\":\"" + entity.AttributeValue + "\",");
  31. }
  32. if (!string.IsNullOrEmpty(entity.AttributeA))
  33. {
  34. strJson.Append("\"" + entity.AttributeA + "\":\"" + entity.AttributeValueA + "\",");
  35. }
  36. if (!string.IsNullOrEmpty(entity.AttributeB))
  37. {
  38. strJson.Append("\"" + entity.AttributeB + "\":\"" + entity.AttributeValueB + "\",");
  39. }
  40. if (!string.IsNullOrEmpty(entity.AttributeC))
  41. {
  42. strJson.Append("\"" + entity.AttributeC + "\":\"" + entity.AttributeValueC + "\",");
  43. }
  44. if (entity.checkstate != null)
  45. {
  46. strJson.Append("\"checked\":" + entity.checkstate + ",");
  47. }
  48. strJson.Append("\"showcheck\":" + entity.showcheck.ToString().ToLower() + ",");
  49. strJson.Append("\"open\":" + entity.isexpand.ToString().ToLower() + ",");
  50. strJson.Append("\"isParent\":" + entity.hasChildren.ToString().ToLower() + ",");
  51. strJson.Append("\"children\":" + ZTreeJson(list, entity.id) + "");
  52. strJson.Append("},");
  53. }
  54. strJson = strJson.Remove(strJson.Length - , );
  55. }
  56. strJson.Append("]");
  57. return strJson.ToString();
  58. }
  59.  
  60. /// <summary>
  61. /// 转换树Json
  62. /// </summary>
  63. /// <param name="list">数据源</param>
  64. /// <param name="ParentId">父节点</param>
  65. /// <returns></returns>
  66. public static string TreeToJson(this List<TreeEntity> list, string ParentId = null) //GetDepartmentTree等方法会给parentId赋值的是null,所以这里的parentId不能写""
  67. {
  68. StringBuilder strJson = new StringBuilder();
  69. List<TreeEntity> item = list.FindAll(t => t.parentId == ParentId);
  70. strJson.Append("[");
  71. if (item.Count > )
  72. {
  73. foreach (TreeEntity entity in item)
  74. {
  75. strJson.Append("{");
  76. strJson.Append("\"id\":\"" + entity.id + "\",");
  77. if (!string.IsNullOrEmpty(entity.text))
  78. {
  79. strJson.Append("\"text\":\"" + entity.text.Replace("&nbsp;", "") + "\",");
  80. }
  81. if (!string.IsNullOrEmpty(entity.value))
  82. {
  83. strJson.Append("\"value\":\"" + entity.value + "\",");
  84. }
  85.  
  86. if (!string.IsNullOrEmpty(entity.Attribute))
  87. {
  88. strJson.Append("\"" + entity.Attribute + "\":\"" + entity.AttributeValue + "\",");
  89. }
  90. if (!string.IsNullOrEmpty(entity.AttributeA))
  91. {
  92. strJson.Append("\"" + entity.AttributeA + "\":\"" + entity.AttributeValueA + "\",");
  93. }
  94. if (entity.title != null && !string.IsNullOrEmpty(entity.title.Replace("&nbsp;", "")))
  95. {
  96. strJson.Append("\"title\":\"" + entity.title.Replace("&nbsp;", "") + "\",");
  97. }
  98. if (entity.img != null && !string.IsNullOrEmpty(entity.img.Replace("&nbsp;", "")))
  99. {
  100. strJson.Append("\"img\":\"" + entity.img.Replace("&nbsp;", "") + "\",");
  101. }
  102. if (entity.checkstate != null)
  103. {
  104. strJson.Append("\"checkstate\":" + entity.checkstate + ",");
  105. }
  106. //if (entity.parentId != null)
  107. //{
  108. // strJson.Append("\"parentnodes\":\"" + entity.parentId + "\",");
  109. //}
  110. strJson.Append("\"parentnodes\":\"" + entity.parentId + "\",");
  111. if (entity.Level != null)
  112. {
  113. strJson.Append("\"Level\":" + entity.Level + ",");
  114. }
  115. strJson.Append("\"showcheck\":" + entity.showcheck.ToString().ToLower() + ",");
  116. strJson.Append("\"isexpand\":" + entity.isexpand.ToString().ToLower() + ",");
  117. if (entity.complete == true)
  118. {
  119. strJson.Append("\"complete\":" + entity.complete.ToString().ToLower() + ",");
  120. }
  121. strJson.Append("\"hasChildren\":" + entity.hasChildren.ToString().ToLower() + ",");
  122. strJson.Append("\"ChildNodes\":" + TreeToJson(list, entity.id) + "");
  123. strJson.Append("},");
  124. }
  125. strJson = strJson.Remove(strJson.Length - , );
  126. }
  127. strJson.Append("]");
  128. return strJson.ToString();
  129. }
  130. }

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. android studio 报红解决

    /Users/houzhibin/gradle/wrapper/dists/gradle-4.1-all/bzyivzo6n839fup2jbap0tjew/gradle-4.1-all.zip

  2. 限流redis+lua

    限流==保险丝策略,可借助框架如spring cloud中Hystrix组件实现.今天介绍使用guava RateLimiter 类实现接口限流. 比如12306抢票: https://blog.cs ...

  3. jQuery第1天

    概念 jQuery 是一个 JavaScript 库,其实就是通过 原生JS 封装了的很多的 方法 和 属性. JS 库特点 JavaScript 库:由第三方开发者基于原生 JS 基础上,封装了很多 ...

  4. 前端面试题整理—React篇

    1.说一下React React是Facebook 开发的前端JavaScript库 V层:react并不是完整的MVC框架,而是MVC中的C层 虚拟DOM:react引入虚拟DOM,每当数据变化通过 ...

  5. mysql MHA扩展haproxy搭建从库只读负载均衡

    [环境介绍] 系统环境:Red Hat Enterprise Linux 7 + 5.7.18 + MHA version 0.57 MHA架构中从库之间的负责均衡可选择mysql_route& ...

  6. mysqldump 备份数据和恢复

    命令行下具体用法如下:  mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 一.导出数据: 导出整个数据库结构和数据mysqldump -h localhost -u ...

  7. PyCharm(python的开发工具)的安装与破解

    最近在进行python的入门学习,俗话说:工欲善其事,必先利其器.最初学习时,一款好的IDE(Integrated Development Environment)绝对是很重要的,有利于后期学习,并且 ...

  8. L1-Day13

    1.Being late is an unforgivable sin here.[我的翻译]在北京,迟到是不可饶恕的罪名.[标准答案]在这里迟到是不可原谅的.[对比分析]对自己的也是醉醉的了,Bei ...

  9. idea编译错误提示编译版本不对,需要注意的配置

  10. P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

    对于一个牛,它存在两种状态:1.处于联通分量 2.不处于联通分量.对于处于联通分量的牛,求出联通分量的大小:对于不处于联通分量的牛,求出其距离联通分量的路程+联通分量大小. 不同的联通分量,染上不同的 ...