当前位置: 移动技术网 > IT编程>开发语言>.net > C# 构造tree菜单工具方法

C# 构造tree菜单工具方法

2018年10月22日  | 移动技术网IT编程  | 我要评论

哈尔滨市人才,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>();
    }
}

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网