使用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。有什么建议吗?
使用LINQ查询只获取ChildIds:
.ForMember(d => d.ChildIds, o => o.MapFrom(s => s.Children.Select(c => c.ChildId).ToArray()));