c# 部门List数据怎么映射成treeReader 附上c#端树形实现代码
时间: 2024-03-05 11:51:04 浏览: 16
以下是一个基于C#的部门树形结构实现示例代码:
```csharp
// 部门类
public class Department
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
public List<Department> Children { get; set; }
}
// 获取部门树形结构
public List<Department> GetDepartmentTree(List<Department> departments)
{
var tree = new List<Department>();
var dictionary = new Dictionary<int, Department>();
foreach (var department in departments)
{
if (department.ParentId == null)
{
tree.Add(department);
}
else
{
if (dictionary.ContainsKey(department.ParentId.Value))
{
dictionary[department.ParentId.Value].Children.Add(department);
}
else
{
var parent = departments.Find(d => d.Id == department.ParentId.Value);
parent.Children.Add(department);
dictionary.Add(department.ParentId.Value, parent);
}
}
}
return tree;
}
```
该示例代码中,首先定义了一个Department类,包含Id、Name、ParentId和Children四个属性,其中Children用于存储子部门列表。然后定义了一个GetDepartmentTree方法,用于将部门列表转换为树形结构。该方法中,首先遍历部门列表,将根部门加入到tree列表中。然后遍历除根部门以外的部门,将其加入到对应的父部门的Children列表中。如果父部门未被遍历到,则先将其加入到departments列表中,并加入到dictionary字典中,以便后续查找。最后返回tree列表,即为部门树形结构。
在获取部门树形结构后,可以将其转换为JSON格式数据,并使用前面提到的jqGrid插件进行展示。