AutoMapper单个对象映射正常 直接映射List集合无数据如何解决
问题原因
你调用映射方法时的泛型参数填反了,mapper.Map<T>()的泛型T指代的是映射后的目标类型,你当前的写法是把List<Car>类型的源数据再映射成List<Car>,和你要接收的List<CarVM>类型不匹配,AutoMapper找不到对应映射逻辑就返回了空集合,所以AddRange操作没有数据写入。
修复方案
把集合映射的代码改成如下写法即可:
vmList.AddRange(mapper.Map<List<CarVM>>(cars));
额外优化建议
- AutoMapper原生支持集合类型的自动映射,只要你配置了单个元素的映射规则
CreateMap<Car, CarVM>(),不需要额外声明List<Car>到List<CarVM>的映射,Profile里这两行冗余配置可以直接删除。 - 你提供的foreach示例代码存在两处笔误:遍历声明的变量是
car,映射时却用了未定义的item;且映射目标泛型写反成了Car,实际可运行的写法应该是vmList.Add(mapper.Map<CarVM>(car)),和本次集合映射的问题属于同一类逻辑错误。
内容的提问来源于stack exchange,提问作者user1765862
相关产品推荐
相关产品推荐

