记一则 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 ...
随机推荐
- (转)简单的Malloc实现
现在,一般来说,我们可以实现malloc使得对malloc的调用将会被映射到系统调用sbrk上,sbrk(n)将会移动程序中断的位置-也就是程序的data段的最后.-偏移n个字节,这意味着,n个字节的 ...
- 洛谷 P1508
P1508 所属知识点:DP 主要题意: 就是求一个矩阵从下边走到上边,可以走自己前方或左前方或右前方. 问走到上边一共经过的路径和. 类型题:P1216 解题思路: 参考上边的类型题(因为比较简单) ...
- ORA-25153错误及解决办法
出现下图错误 原因就是没有临时表空间,所以要建立临时表空间,下面的语句,记得把地址换成你自己想放的地方. alter tablespace temp add tempfile 'C:/temp.dbf ...
- PHP读取文件内容的五种方式
-----第一种方法-----fread()-------- <?php $file_path = "test.txt"; if(file_exists($file_path ...
- git使用问题与技巧
1.修改gitolite管理员 如果gitolite原来的管理员已经没了,那么需要把当前的公钥放到服务器覆盖,然后替换目录下.ssh/authorized_keys内容 2.clone报告超过限制 w ...
- Spring Boot 2.2.1 发布,一个有点坑的版本!
上一篇:Spring Boot 2.2.0 正式发布,支持 JDK 13! Spring Boot 2.2.0 没发布多久,Spring Boot 2.2.1 又发布了,这是一个很有意思,又有点 &q ...
- Spring通过注解获取所有被注解标注的Beans
Spring提供的方法:Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> annot ...
- Lab_1:练习2——使用qemu执行并调试lab1中的软件
一.实验内容 为了熟悉使用qemu和gdb进行的调试工作,我们进行如下的小练习: (一)从CPU加电后执行的第一条指令开始,单步跟踪BIOS的执行. (二)在初始化位置0x7c00设置实地址断点,测试 ...
- windows 安装 scrapy (python3.7)
今天想要用scrapy爬取数据,想到原来刷过机没有这个库了就重新安装了一遍 安装scrapy 需要的东西 https://pan.baidu.com/s/1kuLvGQBG8tMTCY3WDLuU ...
- ipv4的ip字符串转化为int型
要求: 将现有一个ipv4的ip字符串(仅包含数字,点,空格), 其中数字和点之间的空格(至多一个)是合法的,比如“12 .3. 4 .62”,其他情况均为非法地址.写一个函数将ipv4地址字符串转化 ...