private int[] GetDeepParent(int currentId, int deep, int maxDeep, int[] currentLibraryArray, int companyId) { int[] libraryArray = currentLibraryArray; ViewState["currentmaxDeep"] = maxDeep; LibraryCategoriesGateway libraryCategoriesGateway = new LibraryCategoriesGateway(); libraryCategoriesGateway.LoadAllByLibraryCategoriesId(currentId, companyId); if (libraryCategoriesGateway.Table.Rows.Count > 0) { if (libraryCategoriesGateway.GetParentId(currentId) == 0) { libraryArray[0] = currentId; ViewState["currentmaxDeep"] = deep; return libraryArray; } else { libraryArray = GetDeepParent(libraryCategoriesGateway.GetParentId(currentId), deep + 1, (int)ViewState["currentmaxDeep"], libraryArray, companyId); libraryArray[(int)ViewState["currentmaxDeep"] - deep] = currentId; return libraryArray; } } else { return libraryArray; } }