自动映射器复制列表到列表
我有这些类:
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);