假设互为上级 A B B C C A 需判断节点只能出现过一次 /// <summary> /// 上级单位查询 /// </summary> /// <param name="full_name"></param> /// <returns></returns> public string CrecMdmOrgParentPathQuery(string id) { string parentPath = ""; int n = 1; string parentid = id; for (int i=0;i<n;i++) { CrecMdmOrgViewModel parents = CrecMdmOrgQueryByid(parentid); if (parents==null||string.IsNullOrEmpty(parents.full_name) ) { continue; } if (parentPath.Contains(parents.full_name)) { continue; } parentPath = string.Format(@"{0}\{1}", parents.full_name, parentPath); if (string.IsNullOrEmpty(parents.parent_id) || parents.parent_id == "0" || parents.id == parents.parent_id) { continue; } parentid = parents.parent_id; n++; } return parentPath; } private string SetParentPathbycount(string parentPath, string parentid, List<CrecMdmOrgViewModel> allorg) { int count = 1; for (int i=0;i<count;i++) { List<CrecMdmOrgViewModel> parents = allorg.Where(o => o.id == parentid).ToList(); if (parents != null && parents.Count > 0) { if (parentPath.Contains(parents[0].full_name)) { continue; } parentPath = string.Format(@"{0}\{1}", parents[0].full_name, parentPath); if (string.IsNullOrEmpty(parents[0].parent_id) || parents[0].parent_id == "0" || parents[0].id == parents[0].parent_id) { continue; } parentid = parents[0].parent_id; count++; } } return parentPath; } ;