c# - detail - automapper nested mapping
Automapper copia lista a lista (3)
Tengo estas clases:
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 ;}
}
Definí esto:
Mapper.CreateMap<Person, PersonView>();
Mapper.CreateMap<PersonView, Person>()
.ForMember(person => person.Id, opt => opt.Ignore());
Eso es trabajo para esto:
PersonView personView = Mapper.Map<Person, PersonView>(new Person());
Me gustaría hacer lo mismo pero para la List<Person> to List<PersonView>
pero no encuentro la sintaxis correcta.
Gracias
Para AutoMapper 6 <sería:
En StartUp:
Mapper.Initialize(cfg => {
cfg.CreateMap<Person, PersonView>();
...
});
Entonces úsalo así:
List<PersonView> personViews = Mapper.Map<List<PersonView>>(people);
También puedes probar así:
var personViews = personsList.Select(x=>x.ToModel<PersonView>());
dónde
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);
}
Una vez que haya creado el mapa (lo que ya ha hecho, no necesita repetir para las listas), es tan fácil como:
List<PersonView> personViews =
Mapper.Map<List<Person>, List<PersonView>>(people);
Puede leer más en la documentación de AutoMapper para listas y matrices .