59

我有这些课程:

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>List<PersonView>但我没有找到正确的语法。

谢谢

4

3 回答 3

119

一旦你创建了地图(你已经完成了,你不需要为列表重复),它很简单:

List<PersonView> personViews = 
    Mapper.Map<List<Person>, List<PersonView>>(people);

您可以在AutoMapper 文档中了解更多关于 Lists 和 Arrays的信息。

于 2012-01-17T18:07:31.927 回答
17

对于 AutoMapper 6< 它将是:

在启动中:

Mapper.Initialize(cfg => {
    cfg.CreateMap<Person, PersonView>();
    ...
});

然后像这样使用它:

List<PersonView> personViews = Mapper.Map<List<PersonView>>(people);
于 2017-05-19T12:32:09.313 回答
3

你也可以这样尝试:

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);
 }
于 2016-04-15T14:50:10.803 回答