我有这些课程:
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>
做同样的事情,但我找不到正确的语法。
由于
答案 0 :(得分:85)
一旦你创建了地图(你已经完成了,你不需要重复列表),它就像:
List<PersonView> personViews =
Mapper.Map<List<Person>, List<PersonView>>(people);
您可以在AutoMapper documentation for Lists and Arrays中阅读更多内容。
答案 1 :(得分:7)
对于AutoMapper 6&lt;它会是:
在StartUp中:
Mapper.Initialize(cfg => {
cfg.CreateMap<Person, PersonView>();
...
});
然后像这样使用它:
List<PersonView> personViews = Mapper.Map<List<PersonView>>(people);
答案 2 :(得分:3)
You can also try like this:
var personViews = personsList.Select(x=>x.ToModel<PersonView>());
where
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);
}