使用Automapper

时间:2016-08-08 19:40:28

标签: c# automapper

我有一个客户对象,其中包含地址的集合,我想用一个映射到客户视图模型>地址视图模型。我想要映射到视图模型的集合中的地址由地址中的特定值选择。即类型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 。 有没有办法从集合中选择特定对象并将其映射到单个对象。

1 个答案:

答案 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

,它就不会抛出或映射