我有一个客户对象,其中包含地址的集合,我想用一个映射到客户视图模型>地址视图模型。我想要映射到视图模型的集合中的地址由地址中的特定值选择。即类型Id == 1
我的Automapper配置是:
cfg.CreateMap<Customer, CustomerVM>()
.ForMember(dest => dest.Address, opt => opt.MapFrom(src => src.Type.Id== 2).FirstOrDefault())
.ReverseMap();
cfg.CreateMap<Address, AddressVM>()
.ForMember(dest => dest.Street,opt=>opt.MapFrom(src=>src.Street1))
.ForMember(dest => dest.State,opt=>opt.MapFrom(src=>src.Region))
.ForMember(dest => dest.Postal, opt => opt.MapFrom(src => src.PostalCode))
public class Customer{
public virtual ICollection<Address> Addresses{get; set;}
}
public class CustomerVM{
public AddressVM Address{get; set;}
}
这是映射,但地址 null 。 有没有办法从集合中选择特定对象并将其映射到单个对象。
答案 0 :(得分:2)
这适合我。
cfg.CreateMap<Customer, CustomerVM>()
.ForMember(dest => dest.Address, address => address
.MapFrom(src => src.Addresses.FirstOrDefault(add => add.Type.Id == 2)));
如果没有address.type == 2
,它就不会抛出或映射