首页 新闻 会员 周边 捐助

C#设计递归问题

0
悬赏园豆:100 [已解决问题] 解决于 2013-04-04 12:40

用c#设计一个类和算法,找出一个公司所有部门中所有年龄大于25岁的员工。

注:部门中还会有子部门

具体代码怎么写?

< >
分享
最佳答案
0

大约是这样

员工类

  public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
 
        /* other attribe */
    }

部门类

  public class Dept
    {
        public List<Person> Employee { get; set; }

        public List<Dept> DivDept { get; set; }
    }


调用

static void Main(string[] args)
        {
            List<Person> result = new List<Person>();
            List<Dept> all = new List<Dept>();

            all.ForEach(dept => GetAgeOver(dept, result));
        }


        static void GetAgeOver(Dept dept, List<Person> result)
        {
            if (dept.Employee != null)
            {
                dept.Employee.ForEach(em =>
                {
                    if (em.Age > 25)
                    {
                        result.Add(em);
                    }
                });
            }

            dept.DivDept.ForEach(subDept => GetAgeOver(subDept, result));
        }

 



收获园豆:90
我只是来看戏的 | 菜鸟二级 |园豆:367 | 2013-04-02 16:38

谢谢哦!了解了!

夏日水晶 | 园豆:73 (初学一级) | 2013-04-04 12:37
其他回答(6)
0

 = =难道你的员工表不是单独的表吗?

丫的 | 园豆:1575 (小虾三级) | 2013-04-02 15:59
0

这个跟递归有神马关系的,直接sql查询出来不行吗?

骷髅人 | 园豆:464 (菜鸟二级) | 2013-04-02 16:04
0

楼上是对的

*^__^* | 园豆:428 (菜鸟二级) | 2013-04-02 17:19
0

楼上是对的

会长 | 园豆:12463 (专家六级) | 2013-04-02 18:15
2

上面的回答可以解决你的问题。不过需要注意的是要看你数据是怎么存储的,一般使用数据库的话,是不会直接存个树状结构进去的,所以当然也不必考虑什么部门中还有部门的问题了,当然,从数据库中取回数据以后,可能还是需要还原回树。

收获园豆:5
sinhbv | 园豆:2579 (老鸟四级) | 2013-04-02 20:52
0

用递归查数据库效率非常低,数据量小的时候速度还可以,数据量大的时候数据库就成了瓶颈

建议先递归查询出所有部门ID,然后根据数据量大小,分组查询,最后汇总结果。

收获园豆:5
riceHuang | 园豆:217 (菜鸟二级) | 2013-04-03 16:45

谢谢。这个是面试的题目,没有要求那么详细。不过你说的确实不错

支持(0) 反对(0) 夏日水晶 | 园豆:73 (初学一级) | 2013-04-04 12:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册