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"}}}
);