c#.NET의 다양한 반복

11033 단어
최근 업무 중에 메뉴와 각종 귀속이 관련되어 있다.두 가지를 총결산하였다.상위 하위 레벨별 트리 생성
        public async Task> GetTreeByParentId(long id, int getChildCount = 0)
        {
            var menuAll = _ResourceDirectorysRepository.GetAll().Where(zz => zz.IsDeleted == false);
            var menuRoot = await _ResourceDirectorysRepository.GetAll().Where(zz => zz.ParentId == id && zz.IsDeleted == false).ToListAsync();
            var menuList = ObjectMapper.Map>(menuRoot);
            //  ,getChild 
            foreach (var item in menuList)
            {
                item.Child = GetChild(item.Id, menuAll.ToList(), 1, getChildCount);
            }
            return menuList;
        }
   private List GetChild(long id, List menuAll, int excouteCout, int getChildCount)
        {
            if (getChildCount > 0 && excouteCout > getChildCount)
            {
                return null;
            }
            // 
            List childList = new List();
            //  , id id 
            var list = menuAll.Where(x => x.ParentId == id).ToList();
            if (!list.Any())
            {
                return null;
            }
            foreach (var item in list)
            {
                if (item.ParentId == id)
                {
                    childList.Add(new ResourceDirectorysListTreeDto
                    {
                        Id = item.Id,
                        ParentId = item.ParentId,
                        Name = item.Name,
                        IndexLevel = item.IndexLevel
                    });
                }
            }
            //  
            foreach (var item in childList)
            {
                item.Child = GetChild(item.Id, menuAll, excouteCout + 1, getChildCount);
            }
            //  
            if (childList.Count == 0)
            {
                return null;
            }
            return childList;
        }

상위 하위 수준별로 List 생성
        public async Task> GetAllListByParentId(long id)
        {

            var menuRoot = await _ResourceDirectorysRepository.GetAll().Where(zz => zz.ParentId == id && zz.IsDeleted == false).ToListAsync();
            var menuList = ObjectMapper.Map>(menuRoot);
            //  ,getChild 
            var temp = new List();
            foreach (var item in menuList)
            {
                temp.Add(item);
                var t = GetChild2(item.Id);
                if (t != null)
                {
                    item.IsParent = true;
                    temp.AddRange(t);
                }
                else
                {
                    item.IsParent = false;
                }

            }
            return temp;
        }
        private List GetChild2(long id)
        {
            // 
            List childList = new List();
            //  , id id 
            var list = _ResourceDirectorysRepository.GetAll().Where(x => x.ParentId == id).ToList();
            if (!list.Any())
            {
                return null;
            }
            foreach (var item in list)
            {
                if (item.ParentId == id)
                {
                    var z = new ResourceDirectorysListDto
                    {
                        Id = item.Id,
                        ParentId = item.ParentId,
                        Name = item.Name,
                    };
                    childList.Add(z);
                    var t = GetChild2(item.Id);
                    if (t != null)
                    {
                        z.IsParent = true;
                        childList.AddRange(t);
                    }
                    else
                    {
                        z.IsParent = false;
                    }
                }
            }
            //  
            if (childList.Count == 0)
            {
                return null;
            }
            return childList;
        }

좋은 웹페이지 즐겨찾기