static List<TreeNode> GetAllNodesRecursive(IEnumerable nodes) { var allNodes = new List<TreeNode>(); foreach (TreeNode node in nodes) { allNodes.Add(node); if (node.Nodes.Count != 0) allNodes.AddRange(GetAllNodesRecursive(node.Nodes)); } return allNodes; }