2016-08-08 25 views
0

Ich habe ein Kunden Objekt mit einer Sammlung von Adressen, die ich mit einem einzigen Adresse View-Modell zu einem Kunden View-Modell abzuzubilden möchte . Die Adresse aus der Sammlung, die dem Ansichtsmodell zugeordnet werden soll, wird durch einen bestimmten Wert in der Adresse ausgewählt. das heißt, wo Typ Id == 1Zuordnung zu einzelnem Objekt aus der Quelle mit Sammlung von Objekt mit AutoMapper

My AutoMapper config:

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;} 
     } 

Dies ist Mapping aber die Adresse ist null. Gibt es eine Möglichkeit, ein bestimmtes Objekt aus einer Sammlung auszuwählen und es einem einzelnen Objekt zuzuordnen.

Antwort

2

Das funktioniert für mich.

cfg.CreateMap<Customer, CustomerVM>() 
.ForMember(dest => dest.Address, address => address 
.MapFrom(src => src.Addresses.FirstOrDefault(add => add.Type.Id == 2))); 

Schön wird es nicht oder Karte werfen, wenn es keine address.type == 2 ist