![](/img/trans.png)
[英]Automapper -> map named properties of object to an array property
[英]AutoMapper - Map objects' properties (from object array to string array)
我有两个相似的对象,我正在使用 AutoMapper 相互映射。 我通过执行以下操作创建 map:
CreateMap<Object1, Object2>()
.ForMember(d => d.Name, o => o.MapFrom(s => s.Name))
.ForMember(d => d.Description, o => o.MapFrom(s => s.Description))
现在Object1
有一个属性Object3[] listOfObject3
这个Object3
有一个Id
属性,我想用string[] listOfObject3Ids
map 到我的Object2
属性
我尝试了以下方法,但这不起作用:
CreateMap<Object1, Object2>()
.ForMember(d => d.Name, o => o.MapFrom(s => s.Name))
.ForMember(d => d.Description, o => o.MapFrom(s => s.Description))
.ForMember(d => d.listOfObject3.Id, o => o.MapFrom(s => new [] {s.Id})
我该如何解决这个问题?
除了@Sebastian's answer to work with System.Linq这是正确的,
您还可以使用.ConvertUsing()
方法。
通过.ConvertUsing()
创建从Object3
到string
的映射。
Map 成员从Object1.listOfObject3
到Object2.listOfObject3Ids
。
CreateMap<Object3, string>()
.ConvertUsing((src) => src.Id);
CreateMap<Object1, Object2>()
.ForMember(d => d.Name, o => o.MapFrom(s => s.Name))
.ForMember(d => d.Description, o => o.MapFrom(s => s.Description))
.ForMember(d => d.listOfObject3Ids, o => o.MapFrom(s => s.listOfObject3));
参考
你可以像这样 map :
CreateMap<Object1, Object2>()
.ForMember(d => d.Name, o => o.MapFrom(s => s.Name))
.ForMember(d => d.Description, o => o.MapFrom(s => s.Description))
.ForMember(d => d.ListOfObject3, o => o.MapFrom(s => s.listOfObject3Ids.Select(id => new Object3 { Id = id })));
但正如我已经评论过的,我假设您的 Object2 包含 Object3 的列表,而您的 Object1 包含带有 ID 的列表。 然后你可以像这样 map :
CreateMap<Object1, Object2>()
.ForMember(d => d.Name, o => o.MapFrom(s => s.Name))
.ForMember(d => d.Description, o => o.MapFrom(s => s.Description))
.ForMember(d => d.listOfObject3Ids, o => o.MapFrom(s => s.ListOfObject3.Select(o => o.Id)));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.