public List <ProductCategory> Get(int productId) { try { List <ProductCategory> productCategories = new List <ProductCategory>(); IEnumerable <dto.ProductCategory> dto = _productCategoryRepository.Get(productId); foreach (dto.ProductCategory item in dto) { ProductCategory productCategory = new ProductCategory(_categoryService.Get(item.CategoryId)); productCategory.Id = item.Id; productCategory.ParentCategoryTypeId = item.ParentCategoryProductId; productCategory.AddFiles(_filesService.GetByProductCategory(productCategory.Id)); if (item.ParentCategoryProductId is null) { productCategories.Add(productCategory); } else { // IEnumerable<ProductCategory> props = productCategories.Where(x => x.Id == item.ParentCategoryProductId); // AddSubCategories(props.ToList(), productCategory.ParentCategoryProductId); // props.Single().AddChildProductCategory(productCategory); AddSubCategories(productCategories, productCategory); } } return(productCategories); } catch (Exception e) { throw new Exception(e.Message); } }