哈尔滨市人才,uc松鼠大战电脑版,u盘巡警
如何构造tree数据结构,做个笔记,方便查阅,本方法是直接返回json字符串:
private string tomenujson(list<model> data, string parentid) { var sbjson = new stringbuilder(); sbjson.append("["); var entitys = data.findall(t => t.parentid == parentid).tolist(); if (entitys.count > 0) { foreach (var item in entitys) { var strjson = jsonconvert.serializeobject(item, new jsonserializersettings { referenceloophandling = referenceloophandling.ignore }); strjson = strjson.insert(strjson.length - 1, ",\"childnodes\":" + tomenujson(data, item.id) + ""); sbjson.append(strjson + ","); } sbjson = sbjson.remove(sbjson.length - 1, 1); } sbjson.append("]"); return sbjson.tostring(); }
本方法是构造tree实体,返回实体:
/// <summary> /// 绑定列表递归方法 /// </summary> /// <param name="ddl">构造tree数据结构返回的实体</param> /// <param name="menus">绑定的数据源</param> /// <param name="categoryid">父级id值</param> private void bindchanneltype(list<ecategorymodel> ddl, list<ecategory> menus, guid categoryid) { list<ecategory> filtermenu = menus.where(w => w.parentid == categoryid).tolist(); foreach (var m in filtermenu) { var mextend = new ecategorymodel { id = m.id, parentid = m.parentid, categoryname = m.categoryname, url = m.url, sort = m.sort, isdelete = m.isdelete }; ddl.add(mextend); bindchanneltype(mextend.children, menus, m.id); } }
相关的实体类 ecategorymodel.cs:
using system; using system.collections.generic; namespace mseduplatform.models { /// <summary> /// ecategory表实体类 /// </summary> public class ecategorymodel { /// <summary> /// 菜单id /// </summary> public guid id { get; set; } /// <summary> /// 父级菜单id /// </summary> public guid parentid { get; set; } /// <summary> /// 菜单code /// </summary> public string code { get; set; } /// <summary> /// 菜单名称 /// </summary> public string categoryname { get; set; } /// <summary> /// 菜单地址 /// </summary> public string url { get; set; } /// <summary> /// 菜单排序 /// </summary> public int sort { get; set; } /// <summary> /// 显示状态 /// </summary> public int states { get; set; } /// <summary> /// 栏目权限类别 /// </summary> public string authorizationtype { get; set; } /// <summary> /// 是否授权 /// </summary> public bool isauthorization { get; set; } /// <summary> /// 创建人 /// </summary> public guid creater { get; set; } /// <summary> /// 创建时间 /// </summary> public datetime createtime { get; set; } /// <summary> /// 修改人 /// </summary> public guid modify { get; set; } /// <summary> /// 修改时间 /// </summary> public datetime modifytime { get; set; } /// <summary> /// 是否逻辑删除 /// </summary> public int isdelete { get; set; } /// <summary> /// 子数据列表 /// </summary> public list<ecategorymodel> children = new list<ecategorymodel>(); } }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论