当前位置:编程学习 > C#/ASP.NET >>

代码求优化

不太会lambda,不知是否有更佳的写法


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Menu> totalMenus = new List<Menu> { 
                new Menu{Id=1,Text="系统",Pid=0},
                new Menu{Id=2,Text="用户管理",Pid=1},
                new Menu{Id=3,Text="角色管理",Pid=1},
                new Menu{Id=4,Text="其他",Pid=0},
                new Menu{Id=5,Text="订单管理",Pid=4},
            };

            Console.ReadKey();
        }

        private static List<Menu> NewMethod(List<Menu> totalMenus)
        {
            List<Menu> first = totalMenus.Where(t => t.Pid == 0).ToList();
            if (first.Count > 0)
            {
                foreach (var f in first)
                {
                    NewMethod(totalMenus, f);
                }
            }
            return first;
        }

        private static void NewMethod(List<Menu> totalMenus, Menu f)
        {
            List<Menu> second = totalMenus.Where(t => t.Pid == f.Id).ToList();
            if (second.Count > 0)
            {
                f.Children = second;
                foreach (var s in second)
                {
                    NewMethod(totalMenus, s);
                }
            }
        }
    }

    class Menu
    {
        public int Id { get; set; }
        public string Text { get; set; }
        public int Pid { get; set; }

        public List<Menu> Children { get; set; }
    }
}
--------------------编程问答-------------------- 你想做什么。根据List<Menu>组成树,以及从树中找到Menu对象? --------------------编程问答-------------------- lamda表达式你那样写没有问题呀,
private static List<Menu> NewMethod(List<Menu> totalMenus) 
这个方法里的if语句可以不要,是多余的 --------------------编程问答-------------------- 我是楼主,我是想问,有没有更好的实现方式 --------------------编程问答-------------------- 我遇到这种情况都直接Dictionary,当初看书的时候就见书上说过通过字典类管理键值对效率非常高 --------------------编程问答--------------------
引用 3 楼 xmj7571436 的回复:
我是楼主,我是想问,有没有更好的实现方式


你没有说做什么,我猜测你要做什么,根据我的理解,你现有的代码都是错的,谈何更好。 --------------------编程问答--------------------
引用 5 楼 caozhy 的回复:
Quote: 引用 3 楼 xmj7571436 的回复:

我是楼主,我是想问,有没有更好的实现方式


你没有说做什么,我猜测你要做什么,根据我的理解,你现有的代码都是错的,谈何更好。


那你认为正确的是?

没有想要做什么,只是把一堆数据递归出一个结果集

补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,