当前位置: 首页 > 编程语言 > C#

c#SortingDatafromNeighbor-JoiningTree分享

时间:2023-04-10 11:48:33 C#

c#SortingDatafromNeighbor-JoiningTree我有一堆数据,将被表示为一棵树。我正在使用的控件要求对数据进行正确排序。这是每个节点的结构:publicclassTreeNode{publicGuidid{get;放;}公共字符串名称{get;放;}publicintlevel{get;放;公共指南?父母{得到;放;}publicboolisLeaf{得到;放;我需要一种方法来对数据进行排序,以便我有一个TreeNodes列表,其中根节点在前,然后是子节点等等。换句话说,所有直接的孩子都需要跟随列表中的父母。我还想按名称对子节点和叶节点进行排序。(>=expandable,o=leaf)root>level1a>level1b>level2d>level2aolevel1aolevel1bo这个有捷径吗?我假设我需要一些递归函数并且不能使用orderby语句的组合对其进行排序(类似于list.OrderBy(x=>x.parent).ThenBy(x=>x.level).ThenBy(x=>x.isLeaf);)使用LINQ表达式执行此操作是不正确的。这种递归的方法应该可以解决问题:以上是C#学习教程:c#从邻接树排序数据共享。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——IEnumerableTreeOrder(IEnumerablenodes){//求根节点varroot=nodes.Single(node=>节点.parent==null);//构建从父id到子id的逆向查找varchildrenLookup=nodes.Where(node=>node.parent!=null).ToLookup(node=>node.parent.Value);返回TreeOrder(root,childrenLookup);}IEnumerableTreeOrder(TreeNoderoot,ILookupchildrenLookup){yieldreturnroot;如果(!childrenLookup.Contains(root.id))yieldbreak;foreach(varchildinchildrenLookup[root.id])foreach(varnodeinTreeOrder(child,childrenLookup))yieldreturnnode;}侵权请点击右侧联系管理员删除。如需转载请注明出处: