C# 如何通过文本在TreeView中查找TreeNode?

C# 如何通过文本在TreeView中查找TreeNode?,c#,.net,linq,treeview,C#,.net,Linq,Treeview,我在一个循环中构建一个树视图。在每次迭代中,我都有: 根节点 上一个节点名 如果我只能访问根节点,如何找到具有指定文本的TreeNode 在创建异常(“序列不包含元素”)的步骤中,树如下所示: Root Folder1 Folder1.1 Folder2 Folder3 我想将File1.1.1作为子文件添加到Folder1.1 我抛出异常的代码 rootNode.Nodes .Cast<TreeNode>() .Whe

我在一个循环中构建一个树视图。在每次迭代中,我都有:

  • 根节点
  • 上一个节点名
如果我只能访问根节点,如何找到具有指定文本的
TreeNode

在创建异常(“序列不包含元素”)的步骤中,树如下所示:

Root
    Folder1
        Folder1.1
    Folder2

    Folder3
我想将
File1.1.1
作为子文件添加到
Folder1.1

我抛出异常的代码

rootNode.Nodes
    .Cast<TreeNode>()
    .Where(x => x.Text == "Folder1.1")
    .Last()
    .Nodes
    .Add("File1.1.1");
rootNode.Nodes
.Cast()
。其中(x=>x.Text==“Folder1.1”)
.Last()
.节点
.添加(“文件1.1.1”);

rootNode。节点
将只包含
文件夹1~3
Folder1.1
列在
Folder1
节点下。所以为了找到它,你需要遍历整个树

rooteNode.Flatten()
    .Last(x => x.Text == "Folder1.1")
    .Nodes.Add("File1.1.1");

公共静态类TreeNodeHelper
{
公共静态IEnumerable展平(此树节点根)
{
产量回归根;
foreach(root.Nodes中的TreeNode节点)
foreach(展平(节点)中的var项)
收益回报项目;
}
}
你救了我一个晚上:)谢谢!
public static class TreeNodeHelper
{
    public static IEnumerable<TreeNode> Flatten(this TreeNode root)
    {
        yield return root;

        foreach(TreeNode node in root.Nodes)
            foreach(var item in Flatten(node))
                yield return item;
    }
}