/// <summary>
/// 递归一个List<ProvinceOrg>
/// </summary>
/// <returns></returns>
public void RecursionProvinceOrgs(List<ProvinceOrg> provinceOrgs, ref List<ProvinceOrg> _provinceOrgs)
{
if (provinceOrgs != null && provinceOrgs.Count() > 0)
{
// 1、通过linq查询出children为空的。
var _provinceOrgs_ = provinceOrgs.Where(p => p.children.Count() == 0);
if (_provinceOrgs_.Count() > 0)
{
//2、将children为空的添加至_provinceOrgs
_provinceOrgs.AddRange(_provinceOrgs_);
} // 处理剩余不为空的,父级的ORG
var _provinceOrgs_Surplus = provinceOrgs.Where(p => p.children.Count() > 0);
foreach (ProvinceOrg provinceOrg in _provinceOrgs_Surplus)
{
ProvinceOrg provinceOrgClone = provinceOrg.Clone();
_provinceOrgs.Add(provinceOrgClone);
RecursionProvinceOrgs(provinceOrg.children, ref _provinceOrgs);
}
}
}

 实体类:

    public class ProvinceOrg : ICloneable
{
public int orgId { get; set; }
public int parentOrgId { get; set; }
public int areaId { get; set; }
public string areaCode { get; set; }
public string orgName { get; set; }
public string fullOrgName { get; set; }
public string orgType { get; set; }
public string state { get; set; }
public string orgCode { get; set; }
public int seq { get; set; }
public string isBusDep { get; set; }
public string depCateCode { get; set; }
public string legalPerson { get; set; }
public string contacts { get; set; }
public string phone { get; set; }
public string address { get; set; }
public string orgFunctions { get; set; }
public int num;
public List<ProvinceOrg> children { get; set; } /// <summary>
/// 克隆并返回一个对象。
/// </summary>
/// <returns></returns>
public ProvinceOrg Clone()
{
ProvinceOrg p = (ProvinceOrg)this.MemberwiseClone();
p.children = new List<ProvinceOrg>();
return p;
} object ICloneable.Clone()
{
return this.Clone();
}
}

递归一个List<T>,可自己根据需要改造为通用型。的更多相关文章

  1. 城市经纬度 json 理解SignalR Main(string[] args)之args传递的几种方式 串口编程之端口 多线程详细介绍 递归一个List<T>,可自己根据需要改造为通用型。 Sql 优化解决方案

    城市经纬度 json https://www.cnblogs.com/innershare/p/10723968.html 理解SignalR ASP .NET SignalR 是一个ASP .NET ...

  2. 在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。

    //在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’:输出这个数组中的所有元素. char [][]y=new char [10][10 ...

  3. 一个项目的SpringCloud微服务改造过程

    SSO是公司一个已经存在了若干年的项目,后端采用SpringMVC.MyBatis,数据库使用MySQL,前端展示使用Freemark.今年,我们对该项目进行了一次革命性的改进,改造成SpringCl ...

  4. 多云部署多主模式的MGR集群,每个云一个MGR 节点,满足业务单元化改造的需求

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 本 ...

  5. 用MVC5+EF6+WebApi 做一个考试功能(六) 仓储模式 打造EF通用仓储类

    前言 年底工作比较忙,年度总结还没写,项目要上线,回老家过年各种准备.尤其是给长辈给侄子侄女准备礼物头都大了. 原来想年前先出一版能用的,我看有点悬了,尽量先把大体功能弄出来,扔掉一些,保证能考试,然 ...

  6. C# Winform下一个热插拔的MIS/MRP/ERP框架(通用控件)

    一直对商业控件不感冒, 结合日常工作, 我写了几个常用控件. 一.下拉框控件(仿Access下拉框:F4下拉,自动输入,支持单/多列显示),可在Datagridview中使用. 1.常规: 2.Dat ...

  7. 【AMAD】dogpile.cache -- 一个Python缓存API,提供一套通用的接口来适配不同的缓存后端

    简介 动机 作用 用法 个人评分 简介 Dogpile1由两套子系统组成,其中一个是基于另一个来构建的. dogpile提供了dogpile lock的概念,这个控制结构让一个线程可以被选为一些资源的 ...

  8. 【C++第一个Demo】---控制台RPG游戏2【通用宏、背包类】

    [通用 ]--一些游戏中常用的宏.函数和枚举 #ifndef _MARCO_H_ #define _MARCO_H_ //------------------------常用系统库---------- ...

  9. CSS3系列一(概述、选择器、使用选择器插入内容)

    CSS3模块化结构 CSS历史发展 CSS(Cascading Style Sheet),层叠样式表,是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言. CSS3属性选择器 E[att ...

随机推荐

  1. Spring4托管Hibernate5并利用HibernateTemplate进行数据库操作

    时隔半年,再次发布配置类的相关Blog,因为左手受伤原因先做一个简述. 首先利用idea创建一个Spring+SpringMVC+Hibernate项目,注意的是因为我们要完全放弃Hibernate以 ...

  2. 重温《STL源码剖析》笔记 第五章

    源码之前,了无秘密  ——侯杰 序列式容器 关联式容器 array(build in) RB-tree vector set heap   map priority-queue multiset li ...

  3. CentOS 7.4 MySQL 5.7.20主从环境搭建(M-S)

    MySQL主从原理: 一,master记录二进制日志,在每个事务更新数据完成之前,master在二进制日志中记录这些改变.mysql将事务写入二进制日志,即使事务中的语句都是交叉执行的.在事件写入二进 ...

  4. c语言中realloc()函数解析

    一.基本特性 1. realloc()函数可以重用或扩展以前用malloc().calloc()及realloc()函数自身分配的内存. 2. realloc()函数需两个参数:一个是包含地址的指针( ...

  5. CSS中的背景、雪碧图、超链接的伪类样式

    一.背景 1.背景颜色 background-color: red; 2.背景图片 background-image: url("../../img/l1.png"); 3.图片填 ...

  6. 关于eclipse的一些问题

    解决Eclipse,MyEclipse出现An error has occurred,See error log for more details的错误 方法1. 在"开始"--& ...

  7. 浅谈通信网络(三)——TCP/IP协议

    简介 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.In ...

  8. C语言中变量的存储方式

    变量可以分为全局变量.静态全局变量.局部变量和静态局部变量变量的声明有两种情况:1)一种是需要建立存储空间的(定义性声明).例如int a 在生命的时候就已经建立了存储空间.2)另一种是不需要建立存储 ...

  9. spring-security doc logout

    18.5.3 Logging Out Adding CSRF will update the LogoutFilter to only use HTTP POST. This ensures that ...

  10. Javascript 进阶 面向对象编程 继承的一个例子

    Javascript的难点就是面向对象编程,上一篇介绍了Javascript的两种继承方式:Javascript 进阶 继承,这篇使用一个例子来展示js如何面向对象编程,以及如何基于类实现继承. 1. ...