自动映射器复制列表到列表
我有这些类:
public class Person { public int Id{ get; set ;} public string FirstName{ get; set ;} public string LastName{ get; set ;} } public class PersonView { public int Id{ get; set ;} public string FirstName{ get; set ;} public string LastName{ get; set ;} } 
我定义了这个:
 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>但我没有find正确的语法。 
谢谢
一旦你创build了地图(你已经完成了,你不需要重复列表),它就像下面这样简单:
 List<PersonView> personViews = Mapper.Map<List<Person>, List<PersonView>>(people); 
您可以在AutoMapper文档列表和数组中阅读更多内容。
你也可以这样尝试:
 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); } 
对于AutoMapper 6 <它将是:
在启动时:
 Mapper.Initialize(cfg => { cfg.CreateMap<Person, PersonView>(); ... }); 
然后像这样使用它:
 List<PersonView> personViews = Mapper.Map<List<PersonView>>(people);