使用Automapper将集合的属性映射到原语数组

本文关键字:映射 原语 数组 属性 Automapper 集合 使用 | 更新日期: 2023-09-27 18:10:42

给定以下一组类:

class Parent
{
    string Name { get; set; }
    List<Child> children { get; set; }
}
class Child
{
     short ChildId { get; set; }
     string Name { get; set; }
}
class ParentViewModel
{
      string Name { get; set; }
      short[] ChildIds { get; set; }
}

当我呼叫

Mapper.Map<Parent, ParentViewModel>(vm);

是否有可能让AutoMapper将Child.ChildId的列表翻译为ParentViewModel.ChildIds ?

我试过这样做:

Mapper.CreateMap<Child, short>()
    .FromMember(dest => dest, opt => opt.MapFrom(src => src.ChildId));
Mapper.CreateMap<Parent, ParentViewModel>()
    .FromMember(dest => dest.ChildIds, opt => opt.MapFrom(src => new[] {src.children}));

但是我得到一个错误,说它不知道如何将子对象列表转换为int16。有什么建议吗?

使用Automapper将集合的属性映射到原语数组

使用LINQ查询只获取ChildIds:

.ForMember(d => d.ChildIds, o => o.MapFrom(s => s.Children.Select(c => c.ChildId).ToArray()));