加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:20:17 所属栏目:百科 来源:网络整理
导读:给定以下类: class Parent{ string Name { get; set; } ListChild children { get; set; }}class Child{ short ChildId { get; set; } string Name { get; set; }}class ParentViewModel{ string Name { get; set; } short[] ChildIds { get; set; }} 我打
给定以下类:
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()));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读