[英]AutoMapper - How to map an object to list of objects
I wanna map Person
to list of Client
with AutoMapper:我想使用 AutoMapper 将Person
映射到Client
列表:
and this is my models:这是我的模型:
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; }
}
I tried to do it with AutoMapper but I couldn't:我试着用 AutoMapper 来做,但我做不到:
CreateMap<Person, List<Client>>();
You need 4 mapping rules:您需要 4 个映射规则:
Map Person
to Member
.将Person
映射到Member
。
Map Member
to Client
.将Member
映射到Client
。
Map Person
to Client
.将Person
映射到Client
。
Map Person
to List<Client>
.将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) });
You can map them using the following code:您可以使用以下代码映射它们:
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.