记一则 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 ...
随机推荐
- 玩NOILinux
添加PPA源 sudo add-apt-repository ppa:... 搜狗输入法 官网安装指南 下载搜狗输入法的安装包 sudo dpkg -i sogou... 安装fcitx(应该已经有了 ...
- Django+uWSGI+Nginx 部署网站
Django 1.11设置 保证Django在本地调试没有问题: 当然这是前提^_^ 收集静态文件至指定文件夹 Django静态文件设置具体参考:https://docs.djangoproject. ...
- 3.shell编程-文件查找之find命令
3.1.语法格式 find [路劲][选项][操作] 选项参数对照表 3.2.-name 查找/etc/目录下以.conf结尾的文件 find /etc/ -name "*.conf&quo ...
- c04--数组
0.展示PTA总分 1.本章学习内容总结 1.1学习内容总结 数组查找: 1.遍历法查找:从头遍历数组找对应数据. 2.二分法查找:适用于按顺序排列的整形数组. 插入数据: 先找到该数据,对数组进行移 ...
- PHP读取文件内容的五种方式
-----第一种方法-----fread()-------- <?php $file_path = "test.txt"; if(file_exists($file_path ...
- IOCP陷阱
1. AcceptEx 10061 客户端循环连接,没有发送数据,一定次数后,连接失败,WSAGetLastError的结果是10061.并且后续无法再次连接. 这是因为其中的一个参数,详细用法参考I ...
- 20189220余超 团队博客——阅读软件app
项目名称 小说阅读器 项目功能 注册登录 用户信息.用户密码.用户图像修改 书籍分类 书架 书籍搜索(作者名或书籍名) 书籍阅读(仅txt格式,暂不支持PDF等其他格式) 阅读字体.背景颜色.翻页效果 ...
- IE浏览器卡死提示是否停止运行此脚本的解决办法
IE浏览器经常卡死,报是否停止运行此脚本,严重影响使用体验,下面小编教大家怎么解决这个问题,供大家参考! 1.启动IE浏览器,点击上方菜单栏位的工具,如下图所示 2.在工具栏位选择internet选项 ...
- Linux系统下如何配置JDK1.8
Linux系统下如何配置jdk1.8 1 jdk的下载 文件名称 jdk-8u121-linux-x64.tar.gz 下载地址 http://www.oracle.com/technetwork/j ...
- [转帖]【mount】Linux根目录空间不足
[mount]Linux根目录空间不足 2019.04.15 21:30:47字数 1094阅读 107 一.问题背景 一台数据库服务器,突然监控告警,报根目录空间不足(no space left o ...