记一则 Lambda内递归调用方法将集合对象转换成树形结构
public dynamic GetDepartments(string labID)
{
List<int> usedIDs = new List<int>(); //缓存已用过的ID //定义递归算法
Func<object,List<DepartmentItem>, List<DepartmentItem>, dynamic> recursion = (r,d,a) =>
{
List<dynamic> dyData = new List<dynamic>();
if (d.Count > 0)
{
d.ForEach(x =>
{
if (!usedIDs.Contains(x.DepartmentID))
{
dynamic department = new ExpandoObject();
department.DepartmentID = x.DepartmentID;
department.DepartmentName = x.DepartmentName;
department.DepartmentDesc = x.DepartmentDesc;
department.CreateTime = x.CreateTime;
department.ParentDepartmentID = x.ParentDepartmentID;
usedIDs.Add(x.DepartmentID);
// department.children = recursion(r, d, a); 这里直接调用的话会提示未定义变量,因为func的定义还没结束..
// 所以用以下的方法:调用的时候用object把方法传进来,然后转换下再调用执行;
var func_recursion = r as Func<object, List<DepartmentItem>, List<DepartmentItem>, dynamic>;
department.children = func_recursion(r, a.Where(w => w.ParentDepartmentID == x.DepartmentID).ToList(), a);
dyData.Add(department);
}
});
} return dyData;
};
var departments =.....//获取集合数据; //调用方法
//这里第一个参数就是方法的本身,传递进去进行递归调用
var result = recursion(recursion, departments, departments); return result; }
代码是将集合对象转换成树形结构
记一则 Lambda内递归调用方法将集合对象转换成树形结构的更多相关文章
- OC 继承子类对象调用方法机制 子类对象访问父类中的实例变量
在继承中,子类对象如何调用到正确方法的机制 每一个Objective - C对象都有一个隐藏的指针指向类的代码,当向一个对象发送消息的时候,当前的对象会首先在当前类里去查找相应的方法,如果找到的话,直 ...
- C#调用WPS将文档转换成pdf进行预览
引用:https://www.jianshu.com/p/445996126c75 vs启动项目可以生成wps实例 本地iis部署的站点却不行 原因是vs是管理员权限,而iis没有权限 解决方法 启动 ...
- js方法实现rgb颜色转换成16进制格式的代码的方法
原文地址:http://www.cnblogs.com/vaal-water/archive/2013/04/08/3008880.html 自己试过很好用 function zero_fill_he ...
- 把dataset对象转换成list集合方法
public static List<T> GetList<T>(DataTable table) where T:new() { List<T> list = n ...
- parseObject方法将json字符串转换成Map
String nwVal=recordDO.getWorkOrderNwVal(); HashMap<String,WxhcWorkOrderDO> nwMap=JSON.parseObj ...
- PHP将对象转换成数组的方法(兼容多维数组类型)
/** * @author gayayang * @date 2012-8-21 * @todo 将对象转换成数组 * @param unknown_type $obj * @return unkno ...
- JS - 把类似document.querySelectorAll(".xxx")、document.getElementsByName("xxx")这种方法的返回结果转换成数组对象
var btns = document.querySelectorAll(".btn");console.log(btns instanceof Array); // falseb ...
- 使用fastjson的parseObject方法将json字符串转换成Map 或者List
fastjson 转换成map HashMap<String,String> map = JSON.parseObject(jsonStr,new TypeReference<Has ...
- Array.prototype.slice.call()等几种将arguments对象转换成数组对象的方法
网站搬迁,给你带来的不便敬请谅解! http://www.suanliutudousi.com/2017/10/10/array-prototype-slice-call%E7%AD%89%E5%87 ...
随机推荐
- Scrapy笔记04- Selector详解
Scrapy笔记04- Selector详解 在你爬取网页的时候,最普遍的事情就是在页面源码中提取需要的数据,我们有几个库可以帮你完成这个任务: BeautifulSoup是python中一个非常流行 ...
- Codeforces Round #606 (Div. 2) E - Two Fairs(DFS,反向思维)
- 洛谷 p3870 开关 线段树模板
这两天学了很长时间于是做了一道水题 我就用了模板,就连任何优化都没有 就AC了,复杂度也很爆炸10个点1500多毫秒 这个题就是把lazy[]改成记录下修改的次数,每次修改的时候mod 2,因为反过来 ...
- nginx配置神器
原文 https://mp.weixin.qq.com/s/zFEk7XzHj3xPReDXEnQxcQ https://nginxconfig.io/ Nginx作为一个轻量级的HTTP服务器,相比 ...
- spring学习-ApplicationContext-spring上下文深入理解
4月份开始复习一遍spring相关知识.让自己巩固一下spring大法的深奥益处,所以就看了大佬的博客,转载留下来日后继续研读.认为重点的标记为红色 以下文章内容转载自:http://www.cnbl ...
- SpringBoot整合MyBatis与MySql8.0
一.前言 之前已经有一篇文章讨论过SpringBoot整合MyBatis,因而此篇不在重复累赘,本文主要是最新版的SpringBoot2.0与MyBatis.最新MySQL8.0整合过程中遇到的问题进 ...
- 大数据(1)---大数据及HDFS简述
一.大数据简述 在互联技术飞速发展过程中,越来越多的人融入互联网.也就意味着各个平台的用户所产生的数据也越来越多,可以说是爆炸式的增长,以前传统的数据处理的技术已经无法胜任了.比如淘宝,每天的活跃用户 ...
- Solr7.x学习(7)-JAVA操作
maven依赖 <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-sol ...
- SpringMvc通过controller上传文件代码示例
上传文件这个功能用的比较多,不难,但是每次写都很别扭.记录在此,以备以后copy用. package com.**.**.**.web.api; import io.swagger.annotatio ...
- Python下的XML-RPC客户端和服务端实现(基于xmlrpclib SimpleXMLRPCServer 模块)
RPC是Remote Procedure Call的缩写,翻译成中文就是远程方法调用,是一种在本地的机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算”,是为了提高各个分立 ...