在TreeView节点上使用where子句

时间:2018-07-20 17:18:00

标签: c# winforms treeview

我有一个TreeView,可以在其中选择节点,如下所示:

           var Key= long.Parse(currentRow.Cells["Key"].Value.ToString());

            var currentNode =  tvProjectList.Nodes[0];
            currentNode.ExpandAll();
            var selectedNode = currentNode.FirstNode.LastNode.LastNode;

如您所见,我仅选择最后一个节点,但我不想仅选择最后一个节点,我想选择Tag等于变量Key

的节点

类似这样的东西:

 var selectedNode = currentNode.FirstNode.LastNode.Tag.Where(x => x.Tag == Key);

但是我不能在节点中使用Where子句。

它说:

  

'object'不包含'Where'的定义,也没有扩展名   接受类型为“ object”的第一个参数的方法“ Where”   找到(您是否缺少using指令或程序集引用?)

如何实现我想要的?

1 个答案:

答案 0 :(得分:0)

如果您已分配了唯一的键,并且想按键查找节点,则只需:

  

mytree.Nodes [0] .Find(“ key_i_am_looking_for”,1);

但是,这显然与您要查找的相反。如果您实际上需要根据标签值查找节点,则唯一的解决方案是从根节点开始,然后递归检查每个节点,直到找到所需标签为止。

private void RecursiveSearch(TreeNode treeNode)  
{            
   foreach (TreeNode tn in treeNode.Nodes)  
   {     
     TreeNodeCollection nodes = treeView.Nodes;         
         foreach (TreeNode n in nodes)  
         {  
            if(n.tag.toString().Equals("what you want"))
                 break;
            else                 
                 RecursiveSearch(n);  
         }  
   }  

}