本例中获取的是所有的晚辈!首先定义家庭成员类:

    public class FamilyMember
{
/// <summary>
/// 身份
/// </summary>
public string identity { get; set; }
public int level { get; set; }
/// <summary>
/// 父亲
/// </summary>
public string father { get; set; }
}

然后,定义递归方法:

        /// <summary>
/// 递归获取晚辈
/// </summary>
/// <param name="members"></param>
/// <param name="m"></param>
/// <returns></returns>
public static List<FamilyMember> GetYoungers(List<FamilyMember> members, FamilyMember m)
{
var result = new List<FamilyMember>(); //获取子女
var subordinate = members.Where(e => e.father == m.identity).ToList(); //如果存在子女
if (subordinate != null)
{
result.AddRange(subordinate);
foreach (var subo in subordinate)
{
result.AddRange(GetYoungers(members, subo));
}
} return result;
}

  方法解释:

    首先,既然是递归,肯定是自己调用自己;

    然后,在方法体内部:

        既然要获取所有的下属(晚辈),首先要获取自己的直属下属,并将结果存入“下属”集合中;

        然后通过递归,获取 “直属下属的直属下属”,同样存入“下属”集合中;

        最后,返回“下属”集合。

递归测试:

        /// <summary>
/// 测试递归
/// </summary>
public static void CheckRecursion()
{
List<FamilyMember> list = new List<FamilyMember>
{
new FamilyMember{ identity = "爷爷", level = , father = ""},
new FamilyMember{ identity = "爸爸", level = , father = "爷爷"},
new FamilyMember{ identity = "叔叔", level = , father = "爷爷"},
new FamilyMember{ identity = "自己", level = , father = "爸爸"},
new FamilyMember{ identity = "弟弟", level = , father = "爸爸"},
new FamilyMember{ identity = "堂兄", level = , father = "叔叔"},
new FamilyMember{ identity = "堂弟", level = , father = "叔叔"},
new FamilyMember{ identity = "儿子", level = , father = "自己"},
new FamilyMember{ identity = "女儿", level = , father = "自己"},
new FamilyMember{ identity = "侄子", level = , father = "弟弟"},
new FamilyMember{ identity = "侄女", level = , father = "弟弟"}
}; var self = new FamilyMember { identity = "爷爷", level = , father = "" }; var youngers = GetYoungers(list, self).OrderBy(p => p.level).ToList();
if(youngers != null)
{
foreach(var p in youngers)
{
Console.WriteLine(p.identity);
}
}
}

  调用该方法即可查看效果:

  

最新文章

  1. C# dynamic 动态创建 json
  2. 在yii框架中如何连接数据库mongodb
  3. JavaScript toLocaleString() 方法
  4. Longest Substring Without Repeating Characters (c#)
  5. JAVA下实现二叉树的先序、中序、后序、层序遍历(递归和循环)
  6. jsp中 response和request区别
  7. Windows网络共享权限设置
  8. 【转载】Web应用工作原理
  9. Hessian介绍
  10. [JAVA关键字] static &amp; final
  11. Covariant Returen Types(协变返回类型)
  12. jquery中read与js中onload区别
  13. Java工程师修炼之路(校招总结)
  14. Python学习(三十五)—— Django之ORM训练专题
  15. Spring容器技术内幕之BeanWrapper类介绍
  16. redis的主从服务器配置
  17. MySQL数据库基础备份
  18. Codeforces Round #439 (Div. 2) Problem B (Codeforces 869B)
  19. php base64转图片
  20. php获取微信用户信息(没测试过)

热门文章

  1. react 提示消息队列 (支持动态添加,删除,多实例化)
  2. java EE学习之数据库操作
  3. iis安装ssl证书
  4. The Art Of Loving
  5. bootstrap环境搭建
  6. vscode教程(基础篇)
  7. S3C2440 块设备(待续)
  8. iOS自动布局学习(UIView+AutoLayout)
  9. npoi 实现类似excel、word自身的加密解密效果
  10. CSS之属相相关