Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中转换以下内容?_C#_.net - Fatal编程技术网

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

如何在C#中转换以下内容?,c#,.net,C#,.net,我有下面的型号 public class Node { public int AutoIncrementId { get; set; } public string Text { get; set; } public List<Node> Nodes { get; set; } ...//other propeties } 您可以使用递归来实现这一点: public TreeView

我有下面的型号

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


        public string Text { get; set; }


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

          ...//other propeties

     }

您可以使用递归来实现这一点:

public TreeView ConvertToTreeView(Node node)
{
    TreeView tv = new TreeView();

    tv.Id = node.AutoIncrementId;
    tv.Text = node.Text;
    if (node.Nodes != null && node.Nodes.Count > 0)
    {
        tv.Items = new List<TreeView>();
        node.Nodes.ForEach(x => tv.Items.Add(ConvertToTreeView(x)));
    }

    return tv;
}
public TreeView ConvertToTreeView(节点)
{
TreeView tv=新的TreeView();
tv.Id=node.AutoIncrementId;
tv.Text=node.Text;
如果(node.Nodes!=null&&node.Nodes.Count>0)
{
tv.Items=新列表();
node.Nodes.ForEach(x=>tv.Items.Add(ConvertToTreeView(x));
}
返回电视;
}
我更喜欢这种形式

public TreeView ConvertToTreeView(Node node)
{
    return new TreeView
            {

                Id = node.AutoIncrementId;
                Text = node.Text;
                Items = node.Nodes.Select(ConvertToTreeView).ToList()
            };
}
编辑:是的,鲍德里克,我做到了:p和

public TreeView ConvertToTreeView(Node node)
{
    return new TreeView
            {

                Id = node.AutoIncrementId;
                Text = node.Text;
                Items = node.Nodes != null
                           ? node.Nodes.Select(ConvertToTreeView).ToList()
                           : new List<TreeView>()
            };
}
public TreeView ConvertToTreeView(节点)
{
返回新树视图
{
Id=node.AutoIncrementId;
Text=node.Text;
Items=node.Nodes!=null
?node.Nodes.Select(ConvertToTreeView.ToList())
:新列表()
};
}

只是看起来没那么好看。

为了清晰和简单,这很好:

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;
}
public TreeView ConvertNode(Node rootNode)
{
var tree=新树视图
{
Id=rootNode.AutoIncrementId,
Text=rootNode.Text,
Items=新列表()
};
if(rootNode.Nodes!=null)
{
foreach(rootNode.Nodes中的var节点)
{
添加(ConvertNode(node));
}
}
回归树;
}

你的
TreeView
不应该保存一个
列表项而不是
列表项吗
commusoft-没有TreeView保存Listmcl-你能给我看一个递归的例子或代码片段吗?你不是说
节点。节点。选择
-如果“节点”为空,它不会崩溃吗?@Aron:看起来可能不太好,但是“对象引用”错误消息看起来也不太好。。。
public TreeView ConvertToTreeView(Node node)
{
    return new TreeView
            {

                Id = node.AutoIncrementId;
                Text = node.Text;
                Items = node.Nodes != null
                           ? node.Nodes.Select(ConvertToTreeView).ToList()
                           : new List<TreeView>()
            };
}
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;
}