使用自动映射器映射对象列表

Posted

技术标签:

【中文标题】使用自动映射器映射对象列表【英文标题】:mapping list of objects using automapper 【发布时间】:2021-10-28 17:04:06 【问题描述】:

我正在使用自动映射器来动态映射对象。

public class CarProfile : Profile

    public CarProfile()
    
        CreateMap<Car, CarVM>();
        CreateMap<CarVM, Car>();
        CreateMap<List<Car>, List<CarVM>>();
        CreateMap<List<CarVM>, List<Car>>();            
    


List<Car> cars = ... get data()...
List<CarVM> vmList = new List<CarVM>();

foreach (var car in cars)

    vmList.Add(mapper.Map<Car>(item));

这可行,但我想映射列表而不是 foreach 列表中的每个对象,所以我尝试了

 vmList.AddRange(mapper.Map<List<Car>>(cars));

我没有收到异常或错误,但 vmList 中没有对象。 我在这里缺少什么?

【问题讨论】:

【参考方案1】:

删除List 映射。

CreateMap<List<Car>, List<CarVM>>();
CreateMap<List<CarVM>, List<Car>>(); 

您只需要单数映射。 复数/列表是开箱即用的,请参阅documentation。

CreateMap<Car, CarVM>();
CreateMap<CarVM, Car>();

您可能还指:mapper.Map&lt;List&lt;CarVM&gt;&gt;(cars)

【讨论】:

以上是关于使用自动映射器映射对象列表的主要内容,如果未能解决你的问题,请参考以下文章

无法使用自动映射器映射内部导航属性。 EF 核心

简单的自动映射器示例

‘终结点映射器中没有更多的终结点可用’

具有核心数据的 Alamofire 对象映射器

如何使用对象映射器从响应 JSON 映射子数组?

自动映射器。来自 json 的映射属性