代码之家  ›  专栏  ›  技术社区  ›  nightingale2k1

使用automapper将ID列表转换为对象

  •  0
  • nightingale2k1  · 技术社区  · 6 年前

    我有对象:

    class Group {
        public string GroupName ; 
        public List<Access> Details ; 
    }
    
    Class Access {
         public int Id;
         public string Name; 
    }
    

    现在我有了这样一个DTO:

    Class GroupDto
    {
        string GroupName; 
        List<int> Details ; 
    }
    

    用户可以在保存之前创建/发送groupdto并转换为group。

    如何为此定义映射配置文件?

    2 回复  |  直到 6 年前
        1
  •  2
  •   CodeNotFound dotnetstep    6 年前

    在您的映射配置文件中,只需使用 MapFrom 方法并让automaper知道如何获取以下数据:

    CreateMap<Group, GroupDto>()
        .ForMember(
            destination => destination.Details, 
            options => options.MapFrom(
                source => source.Details.Select(detail => detail.Id).ToList()
            )
        );
    

    旁注: 请像在示例中那样公开属性而不是字段。还要确保上的属性 GroupDto 类是 public 也一样。

        2
  •  1
  •   thangcao    6 年前

    这样地:

    Mapper.CreateMap<Group, GroupDto>()
                    .ForMember(d => d.Details,
                        opt =>
                            opt.MapFrom(
                                s => s.Details.Select(x=>x.Id).ToList()))