objects detail collection c# automapper automapper-2

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 .