查询TreeNodeCollection

ViV*_*ViV 11 c# linq winforms

我在Windows窗体UI上有一个treeview控件,它有几个节点(有多个子节点).我想查询节点集合,以便比如说1.选择名称以'x'开头的
那些2.选择那些在Node.Tag字段中没有任何数据的节点.

有人可以建议我这样做的方法.Linq会让它变得简单和整洁,但我在Linq上找不到任何查询TreeNodeCollection的内容.

谢谢,

Aak*_*shM 35

因为TreeNodeCollection在.NET 2.0之前,它不是通用集合,所以它没有实现IEnumerable<T>,这是LINQ良好的"主"类型.

但是,你可以只调用.Cast<TreeNode>()一个TreeNodeCollection,然后你得到一个IEnumerable<TreeNode>,然后你可以做所有LINQy的善良.

(这种方法适用于任何实现IEnumerable但不实现的集合IEnumerable<T>)

  • 如果要搜索整个树,则递归方法似乎是自然的选择.这之前可能已经出现了 - 快速搜索发现我[这](http://stackoverflow.com/questions/177277/how-to-get-a-list-of-all-child-nodes-in- a-treeview-in-net)在VB.NET中,但应该很容易翻译; 会有更多. (2认同)