微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 使用Automapper将集合的属性映射到基元数组

给定以下类:
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.有什么建议?

解决方法

使用LINQ查询获取ChildIds:
.ForMember(d => d.ChildIds,o => o.MapFrom(s => s.Children.Select(c => c.ChildId).ToArray()));

原文地址:https://www.jb51.cc/csharp/91956.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐