繁体   English   中英

AutoMapper - 如何将对象映射到对象列表

[英]AutoMapper - How to map an object to list of objects

我想使用 AutoMapper 将Person映射到Client列表:

这是我的模型:

public class Person
{
    public Guid Id { get; set;}
    public string Name { get; set;}
    public string Country { get; set;}
    public string PhoneNumber { get; set;}
}

public class Member
{
    public Guid Id { get; set;}
    public string FullName { get; set; }
}

public class Client
{
    public Member User { get; set; }
}

我试着用 AutoMapper 来做,但我做不到:

CreateMap<Person, List<Client>>();

您需要 4 个映射规则:

  1. Person映射到Member

  2. Member映射到Client

  3. Person映射到Client

  4. Person映射到List<Client>

CreateMap<Person, Member>()
    .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.Name));
                                                                  
CreateMap<Member, Client>()
    .ForMember(dest => dest.User, opt => opt.MapFrom(src => src));
                                                                  
CreateMap<Person, Client>()
    .ConvertUsing((src, dest, ctx) => new Client { User = ctx.Mapper.Map<Member>(src) });
                                                                  
CreateMap<Person, List<Client>>()
    .ConvertUsing((src, dest, ctx) => new List<Client> { ctx.Mapper.Map<Client>(src) });

演示 @.NET Fiddle

您可以使用以下代码映射它们:

CreateMap<Person, Client>()
    .ForMember(dest => dest.User, opt => opt.MapFrom(src => new Member { Id = src.Id, FullName = src.Name }));
CreateMap<Person, List<Client>>()
    .ConvertUsing(src => src.Select(x => new Client { User = new Member { Id = x.Id, FullName = x.Name } }).ToList());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM