c# - 获取要显示为树的动态对象的嵌套列表
问题描述
我有这两个课
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
}
public class CategoryVm
{
public int Id { get; set; }
public string Name { get; set; }
public List<CategoryVm> SubCategories { get; set; }
}
我有一个第一类的列表,我想将它转换为第二种形式,以显示在树视图中。
示例输入
示例输出
解决方案
这是我使用的代码,它工作正常
public List<CategoryVm> GetCategoriesTree(List<Category> categoriesList)
{
var categoriesTree = categoriesList.Where(category => category.ParentCategoryId == null)
.Select(category => new CategoryVm
{
Id = category.Id,
Name = category.Name,
SubCategories = new List<CategoryVm>()
}).ToList();
foreach (var category in categoriesTree)
{
FillSubCategories(category, categoriesList);
}
return categoriesTree;
}
private void FillSubCategories(CategoryVm categoryVm, List<Category> categoriesList)
{
var subCategories = categoriesList.Where(category => category.ParentCategoryId == categoryVm.Id).ToList();
if (subCategories.Any())
{
categoryVm.SubCategories = subCategories.Select(category => new CategoryVm
{
Id = category.Id,
Name = category.Name,
SubCategories = new List<CategoryVm>()
}).ToList();
foreach (var subCategory in categoryVm.SubCategories)
{
FillSubCategories(subCategory, categoriesList);
}
}
}
推荐阅读
- c++ - 如何用类的参数重载运算符+?
- python - 在while循环中添加到列表
- firebase - 根据 Firestore Cloud Functions 中的字段值访问文档
- c - 如何使用链表实现计数排序?
- batch-file - 如何使用 call 命令替换 for 循环中的多个字符串 - 替换 % 是个问题
- python - Groupby 一个 Pandas DataFrame 并单独绘制组
- java - 类编译但在运行时不可用:Robot() 显示 java.lang.reflect.InvocationTargetException
- javascript - glTF 文件没有显示任何内容
- apache-spark - 如何在不重复的情况下分组 - Apache Pig
- python - 使用 DistilBERT 生成文本句子