使用linq按字母顺序对TreeView进行排序

时间:2013-11-29 20:47:04

标签: c# .net linq sorting treeview

我是LINQ的新手,请原谅我,如果这是一个愚蠢的问题,但从我开始理解的LINQ让我相信我应该能够做到以下几点。 我想在TreeView(任何级别)中获取一组节点,并按字母顺序对它们的兄弟节点进行排序。

我能够做到以下几点:

//node is already selected
TreeNode parent = node.Parent;
TreeNodeCollection siblingNodes = node.Parent.Nodes;
siblingNodes = siblingNodes.OrderBy(x => x.Text);

由于TreeNodeCollection实现了IEnumerable。但编译器告诉我

  

System.Windows.Forms.TreeNodeCollection不包含定义   对于OrderBy而没有扩展方法OrderBy接受第一个参数   可以找到类型System.Windows.Forms.TreeNodeCollection(是   你错过了使用指令或程序集引用?)

(我正在使用System.Linq

那么我误解了什么?

2 个答案:

答案 0 :(得分:3)

您是否缺少对LINQ的引用?

using System.Linq;

<强>更新

您需要定义TreeViewNodeSorter才能对节点进行排序。这篇文章将指出正确的方向:Sorting nodes of a TreeView

答案 1 :(得分:1)

基于MSDN:

http://msdn.microsoft.com/en-us/library/system.linq(v=vs.100).aspx

IEnumerable的System.Linq扩展名未定义OrderBy。它为IEnumerable&lt; T&gt;定义了OrderBy。

EnumerableQuery ClassEnumerableQuery<T> Class