【问题标题】:Get nested list of dynamic objects to be displayed as tree [duplicate]获取要显示为树的动态对象的嵌套列表[重复]
【发布时间】:2019-04-16 14:49:46
【问题描述】:

我有这两个课

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; }
}

我有一个第一类的列表,我想将其转换为第二个形式,以显示在树视图中。


输入示例

示例输出

【问题讨论】:

    标签: c# list recursion


    【解决方案1】:

    这是我使用的代码,它工作正常

    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);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多