首页 > 解决方案 > 如何编写嵌套分组数据的类型C#

问题描述

我对我的数据进行了分组,我想将此数据与模型一起发送到视图。如何将属性写入视图模型

工作计划班

public class WorkPlan:IEntity
{
    public int WorkPlanId { get; set; }
    public int PlanNumber { get; set; }
    public string Day { get; set; }
    public string Lesson { get; set; }
    public string Description { get; set; }
    public bool IsActive { get; set; }
}

工作计划视图模型

public class WorkPlanViewModel:BaseViewModel
{

    public List<WorkPlan> WorkPlans { get; set; }

    public WorkPlan WorkPlan { get; set; }

}

行动

public IActionResult Index()
{
    WorkPlanViewModel model=new WorkPlanViewModel();
    model.Message=new Message();
    var allWorkPlan = workPlanService.GetAll();

    var groupPlan = allWorkPlan.GroupBy(p => p.PlanNumber)
                    .Select(p => new {PlanNumber=p.Key, Day= p.GroupBy(b => b.Day).ToList() } ).ToList();

    return View(model);
}

groupPlan 是我的分组数据

标签: c#asp.net-mvc

解决方案


您可以创建一个反映该匿名类型的类并将其作为属性添加到您的视图模型中。

控制器/操作代码 - 请注意new GroupPlan下面的代码Select

var vm = new MyViewModel();
vm.GroupPlans = allWorkPlan.GroupBy(p => p.PlanNumber)
                    .Select(p => new GroupPlan { PlanNumber = p.Key, Day = p.GroupBy(b => b.Day).ToList() }).ToList();

GroupPlan 课程

public class GroupPlan
{
    public int PlanNumber { get; set; }
    public List<IGrouping<string, WorkPlan>> Day { get; set; }
}

视图模型类

public class MyViewModel
{
    public List<GroupPlan> GroupPlans { get; set; } 
}

推荐阅读