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

mapping list of objects using automapper

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

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 中没有对象。 我在这里缺少什么?

删除 List 映射。

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

您只需要单数映射。
plural/list 开箱即用,请参阅 documentation

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

您可能还指:mapper.Map<List<CarVM>>(cars)