private List<TreeNode<string>> ItemCodeTraversal(List<TreeNode<string>> nodes, TreeNode<string> parentNode)
{
List<TreeNode<string>> treeNodes = new();
foreach (var nodeItem in nodes.Where(t => t.ParentCode == parentNode.Data))
{
nodeItem.Level = parentNode.Level + 1;
var childerens = ItemCodeTraversal(nodes, nodeItem);
nodeItem.Children.AddRange(childerens);
treeNodes.Add(nodeItem);
//if (nodeItem.Level > 3)
// return $""
}
return treeNodes;
}
使用:
var orginalList = inquiryTemplateDtoEntity.SupQuotedTemplateRows.Select(t => new TreeNode<string>(t.ItemCode, t.ParentCode)).ToList();
var treeList = ItemCodeTraversal(orginalList, new TreeNode<string>("", ""));
treenode 实体
internal sealed class TreeNode<T>
{
public T Data { get; set; }
public string ParentCode { get; set; }
public List<TreeNode<T>> Children { get; set; }
public int Level { get; set; } = 0;
public TreeNode(T data, string parentCode)
{
Data = data;
ParentCode = parentCode;
Level = 0;
Children = new List<TreeNode<T>>();
}
}