C#生成树形结构泛型类
2024-10-11 02:47:02
C#生成树形结构泛型类,使用方法: ToTree<ShowMessageUpdatesTableTreeViewModel>.ToDo(models)
public class ToTree<T> where T : IToTreeModel
{
public static List<T> ToDo(List<T> models)
{
var dtoMap = new Dictionary<int, T>();
foreach (var item in models)
{
dtoMap.Add(item.Id, item);
}
List<T> result = new List<T>();
foreach (var item in dtoMap.Values)
{
if (item.ParentId == )
{
result.Add(item);
}
else
{
if (dtoMap.ContainsKey(item.ParentId))
{
dtoMap[item.ParentId].AddChilrden(item);
}
}
}
return result;
}
}
实体类必须实现接口:
public interface IToTreeModel
{
int Id { get; set; }
int ParentId { get; set; }
List<IToTreeModel> children { get; set; }
void AddChilrden(IToTreeModel node);
}
实体类实例:
public class ShowMessageUpdatesViewModel: IToTreeModel
{
public int Id { get; set; }
public int ParentId { get; set; }
public string Name { get; set; }
public List<IToTreeModel> children { get; set; }
public void AddChilrden(IToTreeModel node)
{
if (children == null)
children = new List<IToTreeModel>();
this.children.Add(node);
}
}
最新文章
- MySQL 导入数据
- 跟着百度学PHP[6]超级全局变量
- ASP.NET页面优化,提高载入速度[转]
- SQL 标量函数-----日期函数datediff()、 day() 、month()、year()
- Bootstrap 3支持IE 8遇到的一个小问题
- C#&;java重学笔记(变量与操作符)
- leetcode:Summary Ranges
- EF调用存储过程
- SGU 199 Beautiful People(DP+二分)
- BZOJ 1012 最大数
- .NET基础拾遗(5)反射2
- Struts2 请求参数接收
- android在桌面弹出一个窗口
- 一次完整的HTTP请求所经历的7个步骤(前三步是浏览器工作,后四步是服务器工作)
- 纯Lambda实现斐波那契数列
- 6.1熟知tsung.xml配置文件(翻译)
- 【1414软工助教】团队作业6——展示博客(Alpha版本) 得分榜
- 论文泛读&#183;Adversarial Learning for Neural Dialogue Generation
- Vue2 学习笔记1
- 潭州课堂25班:Ph201805201 爬虫高级 第十二 课 Scrapy-redis分布 项目实战 (课堂笔记)