AutoMapper映射嵌套列表对象

时间:2019-10-16 07:59:39

标签: c# automapper

我有2个对象:Parent和ParentDTO:

class ParentDTO
    {
        public string AttA { get; set; }
        public List<List<BDto>> AttrBNestedList { get; set; }
    }
    class BDto
    {
        public string AttrC { get; set; }
        public int AtterD { get; set; }
        public string AtterE { get; set; }

        public CDto AttrFobj { get; set; }
    }

    class CDto
    {
        public string AttrG { get; set; }
        public int AtterH { get; set; }
    }

    //--------------------------------------
    class Parent 
    {
        public string AttA { get; set; }
        public List<B> AttrBList { get; set; }
    }
    class B
    {
        public string AttrC { get; set; }
        public int AtterD { get; set; }
        public string AtterE { get; set; }

        public C AttrFobj { get; set; }
        public C AttrGobj { get; set; }
        public C AttrHobj { get; set; }

    }

    class C
    {
        public string AttrI { get; set; }
        public string AttrJ { get; set; }
        public int AtterK { get; set; }
    }

我想使用AutoMapper将数据从ParentDto对象映射到Parent对象 (ParentDto中的所有数据都必须传输到Parent,但是第一个元素从AttrBNestedList复制到AttrBList)

Mapper.CreateMap<CDto, C>();
Mapper.CreateMap<BDto, B>();
Mapper.CreateMap<ParentDto, Parent>()
      .ForMember(dest => dest.AttrBList , opt => opt.AttrBNestedList.singleorDefault??);

我只需要从List<List<BDto>> AttrBNestedList映射到List<B> AttrBList的singleorDefault项目

谁能帮助我。谢谢

1 个答案:

答案 0 :(得分:0)

存在语法错误,不允许您使用SingleOrDefault(),需要使用MapFrom方法:

Mapper.CreateMap<ParentDTO, Parent>().ForMember(dest => dest.AttrBList, opt => opt.MapFrom(src => src.AttrBNestedList.SingleOrDefault()));
相关问题