【问题标题】:What is the proper syntax to map a List<T> in AutoMapper 4.1.0?在 AutoMapper 4.1.0 中映射 List<T> 的正确语法是什么?
【发布时间】:2016-09-18 23:40:11
【问题描述】:

我试过了:

List<Employer> employers = _context.Employers.ToList();
var employersDtos = Mapper.Map<List<Employer>,List<EmployerDto>>(employers);

我也试过这个:

var employers = _context.Employers.ToList();
var employersDtos = Mapper.Map<Employer, EmployerDto>(employers);

选项 #1 构建但最终以employeesDtos 为空。

选项 #2 甚至没有构建,因为我们试图将 List 转换为不是列表的东西。

我的映射配置文件有这些关于这种情况的条目:

            Mapper.CreateMap<Employer, EmployerDto>();
            Mapper.CreateMap<EmployerDto, Employer>();
            Mapper.CreateMap<List<Employer>, List<EmployerDto>>();
            Mapper.CreateMap<List<EmployerDto>, List<Employer>>();

请记住,我使用的是 AutoMapper 4.1.0。谢谢。

【问题讨论】:

  • 'Mapper.Map>(employers)'

标签: c# automapper data-transfer-objects


【解决方案1】:

解决方案是不要将Mapper.CreateMap&lt;List&lt;Employer&gt;,List&lt;EmployerDto&gt;&gt;() 放入映射配置文件中,反之亦然。映射配置文件应该具有非列表对象类型的常规映射:Mapper.CreateMap&lt;Employer, EmployerDto&gt;Mapper.CreateMap&lt;EmployerDto, Employer&gt;

然后,Mapper.Map&lt;List&lt;Employer&gt;, List&lt;EmployerDto&gt;&gt;() 可以毫无问题地使用。关键是,不要将 Mapper.CreateMap 用于 List 类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    相关资源
    最近更新 更多