You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AutoMapper实现嵌套映射并按TaskHead分组任务列表

问题原因

你当前的映射规则是把单个TaskItem直接映射为完整的TaskItemToReturnHeadDTO,所以传入N条任务就会生成N个独立的分组头部,每个分组下仅有1条任务,自然不会实现聚合效果。GroupBy分组属于业务逻辑,不需要耦合到AutoMapper配置中,直接在控制器层处理即可。


1. 修正AutoMapper配置

删除TaskItem与TaskItemToReturnHeadDTO的映射规则,仅保留单条任务的映射即可:

CreateMap<TaskItem, TaskItemToReturnDTO>().ReverseMap();

2. 调整控制器逻辑

先对查询到的任务按ItemStage分组,再将每个分组转换为返回的头部DTO结构:

[HttpGet("all")]
// 修正返回值类型为实际要输出的DTO集合
public async Task<ActionResult<IEnumerable<TaskItemToReturnHeadDTO>>> GetTasks()
{
    var tasks = await _context.TaskItems.ToListAsync();
    // 按ItemStage分组后组装返回结构
    var groupedTasks = tasks.GroupBy(t => t.ItemStage)
        .Select(g => new TaskItemToReturnHeadDTO
        {
            TaskHead = g.Key,
            Tasks = _mapper.Map<List<TaskItemToReturnDTO>>(g.ToList())
        })
        .ToList();
    return Ok(groupedTasks);
}

内容的提问来源于stack exchange,提问作者Matteoni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:57:03