2012-01-17 19 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>については正しい構文が見つかりません。

おかげ

答えて

70

あなたは(あなたがリストのために繰り返す必要はありませんあなたはすでにやった、)マップを作成したら、それはように簡単です:あなたが読むことができる

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

AutoMapper documentation for Lists and Arraysの詳細。

+0

、ソーステンプレートは 'PersonViewは[]'のように、最も一般的なタイプにすることができ、出力は、そのような 'IEnumerableを、ICollectionをなど他のサポートされているタイプのものとすることができるということですIListなど – Alex

2

また、このように試すことができます:AutoMapper 6 <については

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

それは次のようになります。スタートアップで

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

次に使用それこのように:ここで注意することは興味深い何

List<PersonView> personViews = Mapper.Map<List<PersonView>>(people); 
関連する問題