Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用AutoMapper将一个集合映射到另一个集合?_C#_Automapper - Fatal编程技术网

C# 如何使用AutoMapper将一个集合映射到另一个集合?

C# 如何使用AutoMapper将一个集合映射到另一个集合?,c#,automapper,C#,Automapper,我想使用AutoMapper将一个集合映射到另一个集合。我知道约定是为子对象设置映射: Mapper.CreateMap<User, UserDto>(); Mapper.CreateMap(); 然后这就行了: Mapper.Map<List<UserDto>>(UserRepo.GetAll()); Mapper.Map(UserRepo.GetAll()); 但无论如何,我还是想绘制列表。例如,我想这样做: Mapper.CreateMap<

我想使用AutoMapper将一个集合映射到另一个集合。我知道约定是为子对象设置映射:

Mapper.CreateMap<User, UserDto>();
Mapper.CreateMap();
然后这就行了:

Mapper.Map<List<UserDto>>(UserRepo.GetAll());
Mapper.Map(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
        }
Mapper.CreateMap()
.AfterMap((来源、目的地)=>
{
//整个用户列表中存在一些复杂/昂贵的流程
//例如从外部数据库检索数据等
}
这样,我仍然可以使用第一个映射,但也可以对用户列表执行自定义操作。在我的场景中,它在另一个数据中心的外部数据库中查找事件ID,我希望通过只查找唯一ID来优化它,而不是逐对象进行


然而,当我试图将一个用户列表映射到一个UserDto列表时,映射只会返回一个空列表。在
AfterMap
函数中设置断点会显示
destination
变量包含一个空列表。我如何使AutoMapper正确地执行此操作?

好吧,这很尴尬。五分钟后,我只是我想您可以添加一个ConvertUsing函数,它只代理一个成员一个成员的映射:

Mapper.CreateMap<List<User>, List<UserDto>>()
    .ConvertUsing(source => 
        {
            // some complex/expensive process here on the entire user list
            // such as retrieving data from an external database, etc
            return source.Select(Mapper.Map<User, UserDto>).ToList());
        });
Mapper.CreateMap()
.ConvertUsing(源=>
{
//整个用户列表中存在一些复杂/昂贵的流程
//例如从外部数据库检索数据等
返回source.Select(Mapper.Map.ToList());
});
也许这不是你应该做的,但对我来说很有效