Exemple #1
0
        public static List <T> GetNodes <T>(ExpressionNode node) where T : ExpressionNode
        {
            List <T> objList = new List <T>();

            if (node == null)
            {
                return(objList);
            }
            Stack <ExpressionNode> expressionNodeStack = new Stack <ExpressionNode>();

            expressionNodeStack.Push(node);
            while (expressionNodeStack.Count > 0)
            {
                ExpressionNode expressionNode1 = expressionNodeStack.Pop();
                if (expressionNode1 is T)
                {
                    objList.Add((T)expressionNode1);
                }
                IEnumerable <ExpressionNode> childNodes = expressionNode1.GetChildNodes();
                if (childNodes != null)
                {
                    foreach (ExpressionNode expressionNode2 in childNodes)
                    {
                        if (expressionNode2 != null)
                        {
                            expressionNodeStack.Push(expressionNode2);
                        }
                    }
                }
            }
            return(objList);
        }
Exemple #2
0
        public static List <T> GetNodes <T>(ExpressionNode node)
            where T : ExpressionNode
        {
            List <T> nodes = new List <T>();

            if (node == null)
            {
                return(nodes);
            }

            Stack <ExpressionNode> nodeStack = new Stack <ExpressionNode>();

            nodeStack.Push(node);

            while (nodeStack.Count > 0)
            {
                ExpressionNode currentNode = nodeStack.Pop();
                if (currentNode is T)
                {
                    nodes.Add((T)currentNode);
                }

                IEnumerable <ExpressionNode> childNodesCollection = currentNode.GetChildNodes();
                if (childNodesCollection != null)
                {
                    foreach (ExpressionNode childNode in childNodesCollection)
                    {
                        if (childNode != null)
                        {
                            nodeStack.Push(childNode);
                        }
                    }
                }
            }

            return(nodes);
        }