C# 在Linq表达式中创建具有密钥的树节点

C# 在Linq表达式中创建具有密钥的树节点,c#,linq,treeview,C#,Linq,Treeview,我试图用一个键创建一个TreeNode,但是TreeNode没有一个构造函数接受一个键和一个文本。我只找到了以下解决方案: TreeNode tn = new TreeNode("text node"); tn.Name = "keyNode"; 但这些方法不适合我,因为我正试图使用Linq查询将新的TreeNodes添加到我的treeView 以下是我最理想的做法: treeView.Nodes.AddRange( myListOfObject.Select(x => ne

我试图用一个键创建一个
TreeNode
,但是TreeNode没有一个构造函数接受一个键和一个文本。我只找到了以下解决方案:

TreeNode tn = new TreeNode("text node");
tn.Name = "keyNode";

但这些方法不适合我,因为我正试图使用Linq查询将新的
TreeNodes
添加到我的
treeView


以下是我最理想的做法:

treeView.Nodes.AddRange(
    myListOfObject.Select(x => new TreeNode(x.somePropertyForKey, 
                                            x.somePropertyForText)).
                   ToArray<TreeNodes>());
treeView.Nodes.AddRange(
myListOfObject.Select(x=>newtreenode(x.somePropertyWorkey,
x、 somePropertyForText))。
ToArray());

我是否坚持使用
foreach
循环来创建
TreeNodes
,或者您看到了一种方法来完成这一行吗?

这就是新的初始化语法的用途

TreeNode tn = new TreeNode("text node") {Name = "keynode"} ;
应该是这样的。(请检查大括号和语法)

您可能希望使用此构造函数

顺便说一句,如果这不起作用,并且您没有访问数据库,您可以执行以下操作:

treeView.Nodes.AddRange(myListOfObject.Select(new TreeNode
               (
                  "keyNode", 
                  new TreeNode[]{new TreeNode{Name="text node"}}}
               );

+1.它实际上叫安。我不知道。完美的我想看看结果,你似乎是分配了错误的名称“树节点”,然后只是覆盖了名称“keynode”,而没有添加任何子节点。单字符串构造函数设置文本。名称是一个单独的属性。至于添加范围,他试图创建一个要添加到单个节点的节点列表。对象初始化器解决了这个问题。如果这不是目标,那么a
ToArray()
会有不同的问题,我没有问题。更新了Q。
treeView.Nodes.AddRange(myListOfObject.Select(new TreeNode
               {
                  Name = "keyNode", 
                  TreeNode = new TreeNode[]{new TreeNode{Name="text node"}}}
               });
treeView.Nodes.AddRange(myListOfObject.Select(new TreeNode
               (
                  "keyNode", 
                  new TreeNode[]{new TreeNode{Name="text node"}}}
               );