【.net core】获取树形结构数据

//树形数据节点类 此处以layui treeSelect插件数据结构为例
public class TreeSelectModel_Layui { 
	/// <summary>
	/// 数据唯一约束
	/// </summary>
	public string id { get; set; } 
	/// <summary>
	/// 数据项名称
	/// </summary>
	public string name { get; set; }
    /// <summary>
    /// 是否展开 true 展开,flase收起
    /// </summary>
    public bool open { get; set; }
	/// <summary>
	/// 是否选中
	/// </summary>
    public bool @checked { get; set; }
	/// <summary>
	/// 层级 可不赋值
	/// </summary>
    //public int level { get; set; }
	public List<TreeSelectModel_Layui> children { get; set; }
}

//数据实体类
public class TreeData{
    //行政区划编码
    public string areaCode{get;set;}
    //父编码
    public string parentAreaCode{get;set;}
    //行政区划名称
    public string areaName{get;set;}
}


/// <summary>
/// 获取树形下拉选择框数据集合
/// </summary>
/// <returns></returns>
public async Task<List<TreeSelectModel_Layui>> GetTreeSelectList() {
    List<TreeSelectModel_Layui> treeSelects = new List<TreeSelectModel_Layui>();
    List<TreeData> dataList = await GetDataList(null);
    if (selectList != null && selectList.Count > 0) {
        List<TreeData> curList = new List<TreeData>();
        if (selectList.Count(a => string.IsNullOrEmpty(a.parentAreaCode)) > 0)
        {
            curList = selectList.Where(a => string.IsNullOrEmpty(a.parentAreaCode)).ToList();
        }
        else {
            curList = selectList;
        }
        foreach (TreeData item in curList) {
            treeSelects.Add(new TreeSelectModel_Layui() { 
                id = item.areaCode,
                name = item.areaName,
                open = true,
                @checked = false,
                children = GetTreeSelectChildren(selectList, item.areaCode)
            });
        }
    }
    return treeSelects;
}
/// <summary>
/// 通过传入参数递归获取当前项的子级
/// </summary>
/// <param name="allList"></param>
/// <param name="curId"></param>
/// <returns></returns>
private List<TreeSelectModel_Layui> GetTreeSelectChildren(List<TreeData> allList, string curId)
{
    List<TreeSelectModel_Layui> treeChildren = null;
    if (allList.Count(a => a.parentAreaCode == curId) > 0)
    {
        treeChildren = new List<TreeSelectModel_Layui>();
        foreach (TreeData item in allList.Where(a => a.parentAreaCode == curId).ToList())
        {
            treeChildren.Add(new TreeSelectModel_Layui()
            {
                id = item.areaCode,
                name = item.areaName,
                open = true,
                @checked = false,
                children = GetTreeSelectChildren(allList, item.areaCode)
            });
        }
    }
    return treeChildren;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值