2012-01-17 5 views
38

를 목록으로Automapper 복사 목록 나는이 수업을

이를위한 작업의
Mapper.CreateMap<Person, PersonView>(); 
Mapper.CreateMap<PersonView, Person>() 
    .ForMember(person => person.Id, opt => opt.Ignore()); 

:

PersonView personView = Mapper.Map<Person, PersonView>(new Person()); 

내가 같은를 만들 싶습니다 하지만 List<Person> to List<PersonView>에 대한 올바른 구문을 찾을 수 없습니다. 당신은 읽을 수

List<PersonView> personViews = 
    Mapper.Map<List<Person>, List<PersonView>>(people); 

:로

감사

답변

70

당신이지도를 만든 후에 (당신이 이미 완료했습니다, 당신은 목록에 대한 반복 할 필요가 없습니다)은, 그것은뿐만 쉽게 AutoMapper documentation for Lists and Arrays에 더 있습니다.

+0

, 소스 템플릿'PersonView은 []'및 출력이 같은 지원되는 다른 유형이 될 수'는 IEnumerable, ICollection이 같은 가장 일반적인 유형이 될 수 있다는 것입니다 IList 등 – Alex

2

또한이 같은 시도 할 수 있습니다 :

var personViews = personsList.Select(x=>x.ToModel<PersonView>()); 

public static T ToModel<T>(this Person entity) 
{ 
     Type typeParameterType = typeof(T); 

     if(typeParameterType == typeof(PersonView)) 
     { 
      Mapper.CreateMap<Person, PersonView>(); 
      return Mapper.Map<T>(entity); 
     } 

     return default(T); 
} 
3

AutoMapper 6 <의 경우는 다음과 같습니다

Mapper.Initialize(cfg => { 
    cfg.CreateMap<Person, PersonView>(); 
    ... 
}); 

하는 것은 다음 사용 : 시작 프로그램에서

그것 같은 :

여기에주의하는 것이 재미 무엇
List<PersonView> personViews = Mapper.Map<List<PersonView>>(people);