c# List列表数据转换成树形结构
把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(" ", "") + "\",");
}
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(" ", "") + "\",");
}
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(" ", "")))
{
strJson.Append("\"title\":\"" + entity.title.Replace(" ", "") + "\",");
}
if (entity.img != null && !string.IsNullOrEmpty(entity.img.Replace(" ", "")))
{
strJson.Append("\"img\":\"" + entity.img.Replace(" ", "") + "\",");
}
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列表数据转换成树形结构的更多相关文章
- 使用js将后台返回的数据转换成树形结构
将类似如下数据转换成树形的数据: [ { id: 1, name: '1', }, { id: 2, name: '1-1', parentId: 1 }, { id: 3, name: '1-1-1 ...
- javascript将平行的拥有上下级关系的数据转换成树形结构
转换函数 var Littlehow = {}; /** * littlehow 2019-05-15 * 平行数据树形转换器 * @type {{format: tree.format, sort: ...
- js将有父子关系的数据转换成树形结构数据
js将有父子关系的数据转换成树形结构数据 比如如下基本数据: let allDatas = [ { id: 3, name: 'bbbb', parendId: 1 }, { id: 2, name: ...
- 记一则 Lambda内递归调用方法将集合对象转换成树形结构
public dynamic GetDepartments(string labID) { List<int> usedIDs = new List<int>(); //缓存已 ...
- Word排版成树形结构技巧
初始文字 A A1 A2 B1 B1 B2 C C1 希望效果 关健设置
- dom4j 解析字符串成树形结构
引入maven依赖: <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artif ...
- Java数据封装成树形结构,多级
参考地址:https://blog.csdn.net/chendu500qiang/article/details/91493147 1.实体类 @data public class PublishS ...
- idea目录结构子目录在父目录后面跟着改成树形结构
1.点击项目窗口的设置按钮 2.取消Compact Middle Packages选项的对勾即可
- Java编程:将具有父子关系的数据库表数据转换为树形结构,支持无限层级
在平时的开发工作中,经常遇到这样一个场景,在数据库中存储了具有父子关系的数据,需要将这些数据以树形结构的形式在界面上进行展示.本文的目的是提供了一个通用的编程模型,解决将具有父子关系的数据转换成树形结 ...
随机推荐
- DirectX11--HR宏关于dxerr库的替代方案
DirectX11 With Windows SDK完整目录 欢迎加入QQ群: 727623616 可以一起探讨DX11,以及有什么问题也可以在这里汇报. 综述 参考文章:https://blogs. ...
- HttpClient在多线程环境下踩坑总结
问题现场 在多线程环境下使用HttpClient组件对某个HTTP服务发起请求,运行一段时间之后发现客户端主机CPU利用率呈现出下降趋势,而不是一个稳定的状态. 而且,从程序日志中判断有线程处于han ...
- 【C++笔记】析构函数(destructor)
“析构函数”是构造函数的反向函数. 在销毁(释放)对象时将调用它们. 通过在类名前面放置一个波形符 (~) 将函数指定为类的析构函数. 声明析构函数 析构函数是具有与类相同的名称但前面是波形符 ...
- P3203 [HNOI2010]弹飞绵羊
LCT裸题,之后填坑打一下 分块做法:每个点存几次出块以及出块的位置,问的时候直接暴力跳就vans了 首先思考最普通的模拟,发现可以O(n)路径压缩,O(1)的查询,但是需要修改就变成了O(n^2)的 ...
- word20170101厨房家电kitchen appliances
1. Microwave Ovens 2. Electric Kettles 3. Coffeemakers 4. Espresso Machines 5. Toasters 6. Sandwich ...
- 利用request和re抓取猫眼电影排行
import requests import re import time def get_one_page(url): headers = { 'User-Agent': 'Mozilla/5.0 ...
- C# - 引用类型
引用类型(Reference Type) C#是一门使用OOP技术的编程语言(Object Oriented Programming 面向对象编程)面向对象最重要的特性就是接口.继承.多态 C#中所有 ...
- find your present (2) hdoj 2095
/* author:谦智 find your present (2) hdoj 2095 法一:用暴力 法二:用map 法三: 符号是^. 异或是个位运算符号,具体是怎么操作的请百度,这里有个特性使得 ...
- Django-ORM-单表操作
ORM字段参数及单表操作 一.字段参数 1.字段 AutoField(Field) #当model中如果没有自增列,则会自动创建一个列名为id的列 -int 自增列,必须填入参数primary_key ...
- python之yield的一些应用
生成器 yield是用于生成器.生成器通俗的认为,在一个函数中,使用了yield来代替return的位置的函数,就是生成器.它不同于函数的使用方法是:函数使用return来进行返回值,每调用一次,返回 ...