自动映射器复制列表到列表

我有这些类:

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