/// <summary> /// Genera un nivel de una rama del arbol de categorias. /// </summary> /// <param name="parent">Categoria padre del nivel.</param> /// <param name="categorias">Categorias sin insertar en el arbol.</param> private void BuildBranch(Categoria parent, Categoria[] categorias) { parent.Children = categorias.Where(x => x.PadreCategoriaId == parent.Id).ToArray(); var childrenCatagorias = categorias.Where(x => x.PadreCategoriaId != parent.Id).ToArray(); parent.Children.ForEach(x => BuildBranch(x, childrenCatagorias)); }
private void FillTree(TreeView treeView, Categoria[] tree) { tree.ForEach(x => { var node = new TreeNode(x.Nombre) { Tag = x }; treeView.Nodes.Add(node); FillNode(node, x.Children); }); }
private void FillNode(TreeNode parent, Categoria[] children) { children.ForEach(x => { var node = new TreeNode(x.Nombre) { Tag = x }; parent.Nodes.Add(node); FillNode(node, x.Children); }); }
/// <summary> /// Genera el primer nivel del arbol de categorias. /// </summary> /// <param name="categorias">Coleccion de categorias.</param> /// <returns>Coleccion de categorias con estructura de arbol.</returns> private Categoria[] BuildTree(Categoria[] categorias) { var categoriasRoot = categorias.Where(x => !x.PadreCategoriaId.HasValue).ToArray(); var childrenCategorias = categorias.Where(x => x.PadreCategoriaId.HasValue).ToArray(); categoriasRoot.ForEach(x => BuildBranch(x, childrenCategorias)); return categoriasRoot; }
private Categoria FindCategoria(Categoria[] categorias, int categoriaId) { foreach (var categoria in categorias) { if (categoriaId == categoria.Id) return categoria; var child = FindCategoria(categoria.Children, categoriaId); if (child != null) return child; } return null; }
private string GetDescription(Categoria[] categorias, int categoriaId) { foreach (var categoria in categorias) { if (categoria.Id == categoriaId) return categoria.Nombre; var description = GetDescription(categoria.Children, categoriaId); if (!String.IsNullOrEmpty(description)) return String.Concat(categoria.Nombre, "¦", description); } return null; }