private int[] UwzglednijPoziomyZagniezdzone(int aktualnyPoziom, bool uwzglednijBrygady) { #region przygotowanie drzewa List <TreeNode> _nodes = new List <TreeNode>(); if (uwzglednijBrygady) { var wydzialy = context.Wydzialy; foreach (Wydzial w in wydzialy) { _nodes.Add(new TreeNode { id = w.ID, text = w.Nazwa, parent = w.IDParent.ToString() }); } Tree tree = TreeBuilder.BuildTree(_nodes); // dodanie podległych działów do wyniku - potomków w drzewie Tree y = TreeExtensions.FindNode(tree, aktualnyPoziom); List <Tree> x = TreeExtensions.Descendants(y).ToList(); return(x.Select(t => ( int )t.Id).ToArray()); } else { var wydzialy = context.Wydzialy.Where(w => w.IsBrygada == uwzglednijBrygady); foreach (Wydzial w in wydzialy) { _nodes.Add(new TreeNode { id = w.ID, text = w.Nazwa, parent = w.IDParent.ToString() }); } Tree tree = TreeBuilder.BuildTree(_nodes); // dodanie podległych działów do wyniku - potomków w drzewie Tree y = TreeExtensions.FindNode(tree, aktualnyPoziom); List <Tree> x = TreeExtensions.Descendants(y).ToList(); return(x.Select(t => ( int )t.Id).ToArray()); } #endregion }
public static bool FindNode(ChainNode root, string[] path, out ChainMemberNode node) => TreeExtensions.FindNode(meta, root, path, out node);