automapper:从一个数组映射到一个字段

本文关键字:一个 字段 映射 automapper 数组 | 更新日期: 2023-09-27 18:08:06

我在尝试将数组映射到类型时遇到了问题。我得到以下错误

Missing type map configuration or unsupported mapping.
Mapping types:
Run[] -> Run

目标项是Run,源项是Run(数组)....我在global.asax

中设置了映射
   Mapper.CreateMap<Model.Run, Run>();

我想我遗漏了一些东西

automapper:从一个数组映射到一个字段

当您指定了类型映射时,AutoMapper可以自动将集合映射到集合,因此当您有:

Mapper.CreateMap<Model.Run, Run>();

你可以直接用

var runs = Mapper.Map<IEnumerable<Model.Run>, IEnumerable<Run>>(source);

,因为它自然地遵循—它使用您指定的一对一映射将源集合的每个项映射到目标集合。没有自动映射T -> T[]T[] -> T,映射器在映射T[] -> T时应该怎么做?从数组中取出第一项?或者是最后一个?进行某种聚合?如果集合为空怎么办?

你必须写一个单独的,完整的地图,例如:

Mapper.CreateMap<Model.Run[], Run>()
      .ForMember(x => x.NumericMember, expr => expr.MapFrom(y => y.Sum(z => z.NumericMember)))
      .ForMember(//etc...);