Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用linq按字母顺序对树视图排序_C#_.net_Linq_Sorting_Treeview - Fatal编程技术网

C# 使用linq按字母顺序对树视图排序

C# 使用linq按字母顺序对树视图排序,c#,.net,linq,sorting,treeview,C#,.net,Linq,Sorting,Treeview,我是LINQ的新手,所以如果这是一个愚蠢的问题,请原谅我,但从我对LINQ的理解来看,我相信我应该能够做到以下几点。 我想在树状视图中获取一组节点(在任何级别),并根据它们的兄弟节点的字母顺序对它们进行排序 我想我可以做到以下几点: //node is already selected TreeNode parent = node.Parent; TreeNodeCollection siblingNodes = node.Parent.Nodes; siblingNodes = sibling

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

我想我可以做到以下几点:

//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类型的(是 是否缺少using指令或程序集引用?)

(我正在使用
System.Linq


那么,我误解了什么呢?

您是否遗漏了对LINQ的引用

using System.Linq;
更新:


您需要定义一个
TreeViewNodeSorter
,以便能够对节点进行排序。这篇文章将为您指出正确的方向:

您是否缺少对LINQ的引用

using System.Linq;
更新:

您需要定义一个
TreeViewNodeSorter
,以便能够对节点进行排序。这篇文章将为您指出正确的方向:

基于MSDN:

IEnumerable的System.Linq扩展未定义OrderBy。它为IEnumerable定义了OrderBy

与基于MSDN的

IEnumerable的System.Linq扩展未定义OrderBy。它为IEnumerable定义了OrderBy


vs.

不,我正在使用System.Linq(这是我最初的问题,但另一个用户编辑了那句话…),但是,这正是编译器告诉你的。不,Linq的其他扩展方法显示为intellisense,所以Linq就在那里。我可以注释掉我的代码,创建一个虚拟数组,并对其执行Linq OrderBy操作。这与TreeNodeCollection中的OrderBy不一样。不,我使用的是System.Linq(这是我最初的问题,但另一个用户编辑了那句话…),但是,这正是编译器告诉你的。不,Linq的其他扩展方法在intellisense中显示,所以Linq就在那里。我可以注释掉我的代码,创建一个虚拟数组,并对其执行Linq OrderBy操作。在这个TreeNodeCollection案例中,它与OrderBy不同。那么,我不能在TreeNodeCollection上执行Linq命令的缺点是什么?你不能直接在TreeNodeCollection上执行Linq命令。您可以将其更改为List或IEnumerable,然后执行linq。那么,我不能在TreeNodeCollection上执行linq命令的缺点是什么?您不能直接在TreeNodeCollection上执行linq。您可以将其更改为List或IEnumerable,然后执行linq。