private void UpdateSqlScript(TreeNode node) { List <ScriptActionNode> nodes = new List <ScriptActionNode>(); var thisAction = node as ScriptActionNode; if (thisAction != null) { nodes.Add(thisAction); } void addChildrenR(TreeNode parent) { nodes.AddRange(parent.Nodes.OfType <ScriptActionNode>()); foreach (TreeNode child in parent.Nodes) { addChildrenR(child); } }; addChildrenR(node); SetGeneratedSql(SqlDialect.FormatScript(nodes.Select(nodeInner => nodeInner.ScriptAction))); }