TreeNode[] GetChildNodes(IEnumerable values, string propertyName)
{
var nodes = new List<TreeNode>();
foreach (var item in values)
{
var node = new TreeNode(item.ToString()) { Tag = item };
var childValues = GetChildItems(item, propertyName);
var childNodes = GetChildNodes(childValues, propertyName);
if (childNodes.Any())
node.Nodes.AddRange(childNodes);
nodes.Add(node);
}
return nodes.ToArray();
}