树形结构根据某节点查询本节点及下属所有子节点的递归实现
Posted yangwujun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树形结构根据某节点查询本节点及下属所有子节点的递归实现相关的知识,希望对你有一定的参考价值。
数据表中CompanyId,ParentCompany,有层级关系,树形结构根据某节点查询本节点及下属所有子节点的递归实现如下:
public string ids = ""; /// <summary> /// 根据CompanyId 查找到子单位id /// </summary> /// <param name="companyId"></param> /// <returns></returns> private string GetCompanysIds(string CompanyId) { StringBuilder strSqlcode = new StringBuilder(); strSqlcode.Append(" select * from SystemCompany where CompanyId = @CompanyId "); SqlHelper<SystemCompany> sqlHelpercode = new SqlHelper<SystemCompany>(); Dictionary<string, object> parameterscode = new Dictionary<string, object>(); parameterscode.Add("@CompanyId", CompanyId); SystemCompany systemcompany = sqlHelpercode.FindModel(strSqlcode.ToString(), parameterscode); string s = systemcompany.CompanyId; string CompanysIds = GetsIds(s, systemcompany.CompanyId); return CompanysIds; } private string GetsIds(string s, string CompanyId) { List<string> companyids = new List<string>(); StringBuilder strSqlcode = new StringBuilder(); strSqlcode.Append(" select * from SystemCompany where ParentCompany = @ParentCompany "); SqlHelper<SystemCompany> sqlHelpercode = new SqlHelper<SystemCompany>(); Dictionary<string, object> parameterscode = new Dictionary<string, object>(); parameterscode.Add("@ParentCompany", CompanyId); List<SystemCompany> systemcompany = sqlHelpercode.Find(strSqlcode.ToString(), parameterscode); if (systemcompany.Count > 0) { foreach (var item in systemcompany) { s = s + ";" + item.CompanyId; ids = s; GetsIds(s, item.CompanyId); } } else { ids = s; } return ids; }
向上查找同理
以上是关于树形结构根据某节点查询本节点及下属所有子节点的递归实现的主要内容,如果未能解决你的问题,请参考以下文章
MYSQL 查询树形结构数据,查询某个节点下的所有子节点数据。
MySQL查询父节点下面的所有子孙节点,查询用户列表时多级(公司)部门处理,根据反射,递归树形结构工具类