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(顶级);
你说的“似乎不起作用”是什么意思?你有什么错误?你说的“似乎不起作用”是什么意思?你有什么错误?