【问题标题】:Using Automapper to map a property of a collection to an array of primitives使用 Automapper 将集合的属性映射到基元数组
【发布时间】:2011-10-05 18:25:29
【问题描述】:

给定以下一组类:

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}));

但我收到一条错误消息,说它不知道如何将 Child 对象列表转换为 int16。有什么建议吗?

【问题讨论】:

    标签: c# asp.net-mvc-3 automapper


    【解决方案1】:

    使用 LINQ 查询仅获取 ChildId:

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

    【讨论】:

    • 天哪,这太有用了!
    • 不错。而且不需要 .ToArray()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    相关资源
    最近更新 更多