Mapping 自动映射数组中的第一项和其他属性

Mapping 自动映射数组中的第一项和其他属性,mapping,asp.net-core-mvc,automapper,Mapping,Asp.net Core Mvc,Automapper,我的目的是: public class TopLevel{ public string AProperty {get;set;} public int AnotherProperty {get;set;} public SecondLevel[] SecondLevels {get;set;} } public class SecondLevel{ public string AThing {get;set;} public int AnotherThing {get;se

我的目的是:

public class TopLevel{
  public string AProperty {get;set;}
  public int AnotherProperty {get;set;}
  public SecondLevel[] SecondLevels {get;set;}
}

public class SecondLevel{
  public string AThing {get;set;}
  public int AnotherThing {get;set;}
}
我想映射到以下内容:

public class JoinedClass{
  public string AProperty {get;set;}
  public int AnotherProperty {get;set;}
  public string Athing {get;set;}
  public string AnotherThing {get;set;}
}
使用SecondLevel数组的FirstOrDefault成员。 我认为这是可能的,但似乎无法解决如何做到这一点

我试过

CreateMap<TopLevel, JoinedClass>()
  .ForAllMembers(opt=>opt.MapFrom(tl=>tl.SecondLevels.FirstOrDefault())
  .ForMemeber(jc=>jc.AProperty, opt=>opt.MapFrom(tl=>tl.AProperty)
  .ForMemeber(jc=>jc.AnotherProperty , opt=>opt.MapFrom(tl=>tl.AnotherProperty );
CreateMap()
.ForAllMembers(opt=>opt.MapFrom(tl=>tl.SecondLevels.FirstOrDefault())
.ForMemeber(jc=>jc.apProperty,opt=>opt.MapFrom(tl=>tl.apProperty)
.ForMemeber(jc=>jc.AnotherProperty,opt=>opt.MapFrom(tl=>tl.AnotherProperty);
但这似乎根本没有映射任何属性。我还将
ForAllMembers()
放在上述映射的最后,也没有运气。
我正在使用AutoMapper 6.2.0

我不认为您可以对所有成员使用您可以始终映射一对一,下面是一个示例

设置映射配置

public static MapperConfiguration SetupMapping()
{
    return new MapperConfiguration(cfg =>
    {
        cfg.CreateMissingTypeMaps = true;
        cfg.CreateMap<TopLevel, JoinedClass>()
            .ForMember(jc => jc.Athing, opt => opt.MapFrom(t1 => t1.SecondLevels.FirstOrDefault().AThing))
            .ForMember(jc => jc.AnotherThing, opt => opt.MapFrom(t1 => t1.SecondLevels.FirstOrDefault().AnotherThing))
            ;
    });
}
publicstaticmapperconfigurationsetupmapping()
{
返回新的MapperConfiguration(cfg=>
{
cfg.CreateMissingTypeMaps=true;
cfg.CreateMap()
.ForMember(jc=>jc.Athing,opt=>opt.MapFrom(t1=>t1.SecondLevels.FirstOrDefault().Athing))
.ForMember(jc=>jc.AnotherThing,opt=>opt.MapFrom(t1=>t1.SecondLevels.FirstOrDefault().AnotherThing))
;
});
}
示例

var seconds = new SecondLevel[] {
new SecondLevel { AThing = "one", AnotherThing = 1 },
new SecondLevel { AThing = "two", AnotherThing = 2 }
        };

var toplevel = new TopLevel { AProperty = "top", AnotherProperty = 99, SecondLevels = seconds };

MapperConfiguration config = SetupMapping();
IMapper mapper = config.CreateMapper();

var result = mapper.Map<JoinedClass>(toplevel);
var seconds=new SecondLevel[]{
新的第二级{AThing=“one”,另一级=1},
新的第二级{AThing=“two”,另一个=2}
};
var toplevel=newtopLevel{AProperty=“top”,另一个属性=99,SecondLevels=seconds};
MapperConfiguration config=SetupMapping();
IMapper mapper=config.CreateMapper();
var result=mapper.Map(顶级);

我不认为您可以对所有成员使用您可以始终一对一地映射,下面是一个示例

设置映射配置

public static MapperConfiguration SetupMapping()
{
    return new MapperConfiguration(cfg =>
    {
        cfg.CreateMissingTypeMaps = true;
        cfg.CreateMap<TopLevel, JoinedClass>()
            .ForMember(jc => jc.Athing, opt => opt.MapFrom(t1 => t1.SecondLevels.FirstOrDefault().AThing))
            .ForMember(jc => jc.AnotherThing, opt => opt.MapFrom(t1 => t1.SecondLevels.FirstOrDefault().AnotherThing))
            ;
    });
}
publicstaticmapperconfigurationsetupmapping()
{
返回新的MapperConfiguration(cfg=>
{
cfg.CreateMissingTypeMaps=true;
cfg.CreateMap()
.ForMember(jc=>jc.Athing,opt=>opt.MapFrom(t1=>t1.SecondLevels.FirstOrDefault().Athing))
.ForMember(jc=>jc.AnotherThing,opt=>opt.MapFrom(t1=>t1.SecondLevels.FirstOrDefault().AnotherThing))
;
});
}
示例

var seconds = new SecondLevel[] {
new SecondLevel { AThing = "one", AnotherThing = 1 },
new SecondLevel { AThing = "two", AnotherThing = 2 }
        };

var toplevel = new TopLevel { AProperty = "top", AnotherProperty = 99, SecondLevels = seconds };

MapperConfiguration config = SetupMapping();
IMapper mapper = config.CreateMapper();

var result = mapper.Map<JoinedClass>(toplevel);
var seconds=new SecondLevel[]{
新的第二级{AThing=“one”,另一级=1},
新的第二级{AThing=“two”,另一个=2}
};
var toplevel=newtopLevel{AProperty=“top”,另一个属性=99,SecondLevels=seconds};
MapperConfiguration config=SetupMapping();
IMapper mapper=config.CreateMapper();
var result=mapper.Map(顶级);
你说的“似乎不起作用”是什么意思?你有什么错误?你说的“似乎不起作用”是什么意思?你有什么错误?