I use the code below for filtering a treeview. Can this be improved?private IEnumerable<TreeNode> FindNodeByValue(TreeNodeCollection nodes, string searchstring) {    foreach (TreeNode node in nodes)    {        if (node.Value.IndexOf(searchstring,              StringComparison.CurrentCultureIgnoreCase) >= 0)            yield return node;        else        {            foreach (var subNode in FindNodeByValue(node.ChildNodes, searchstring))                yield return subNode;        }    }}protected void Button1_Click(object sender, EventArgs e){    var query= FindNodeByValue(TreeView1.Nodes, fieldFilterTxtBx.Text);    if (query != null)    {        //TreeView1.Nodes[0].Expand();        //TreeView1.Nodes.Clear();        foreach (TreeNode node in query.ToList())        {            TreeView1.Nodes.Add(node);        }        //  TreeNode newnode = new TreeNode(Detail Engineering);        // TreeView1.Nodes.Add(newnode);        TreeView1.ExpandAll();    }    else    {        Label1.Text = No file found;    }}
Filtering a TreeView
c#;asp.net