如何在C#中转换以下内容?

我有以下型号

public class Node
    {
        public int AutoIncrementId { get; set; }


        public string Text { get; set; }


        public List<Node> Nodes { get; set; }

          ...//other propeties

     }

我想将数据转换为以下模型,

public class TreeView
{    
 public int Id {get; set;}
 public string Text {get; set;}
 public List<TreeView> Items {get; set;}    
}

我从以下开始,但后来意识到我怎么知道何时停止?

变量test保存节点数据

var items = test.Data.Select(x => new TreeViewItemModel
   {
     Id = x.AutoIncrementId.ToString(),
     Text = x.Text,
     Items =   x.Nodes.Select(y=> new TreeViewItemModel(
     {

       Id =  y.AutoIncrementId.ToString(),
       Text =  y.Text,
       Items = //do I keep going? 

     }));    
  }    
);

最佳答案 为了清晰和简单,这很好用:

public TreeView ConvertNode(Node rootNode)
{
    var tree = new TreeView
    {
        Id = rootNode.AutoIncrementId,
        Text = rootNode.Text,
        Items = new List<TreeView>()
    };

    if (rootNode.Nodes != null)
    {
        foreach (var node in rootNode.Nodes)
        {
            tree.Items.Add(ConvertNode(node));
        }
    }

    return tree;
}
点赞