【发布时间】:2023-04-04 16:34:01
【问题描述】:
我想使用 AutoMapper 将一个集合映射到另一个集合。我知道约定是为子对象设置映射:
Mapper.CreateMap<User, UserDto>();
然后这工作正常:
Mapper.Map<List<UserDto>>(UserRepo.GetAll());
但我仍然想映射列表。例如,我想做这样的事情:
Mapper.CreateMap<List<User>, List<UserDto>>()
.AfterMap((source, destination) =>
{
// some complex/expensive process here on the entire user list
// such as retrieving data from an external database, etc
}
这样我仍然可以使用第一张地图,还可以对用户列表进行自定义操作。在我的场景中,它在另一个数据中心的外部数据库中查找事件 ID,我想通过仅查找唯一 ID 而不是逐个对象来优化它。
但是,当我尝试将 User 列表映射到 UserDto 列表时,映射只会返回一个空列表。在AfterMap 函数中放置一个断点表明destination 变量包含一个空列表。如何让 AutoMapper 正确执行此操作?
【问题讨论】:
标签: c# automapper