You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AutoMapper实现对象数组到字符串数组的属性映射问题

解决AutoMapper数组属性映射问题

你的代码存在两个关键错误:

  • 目标成员引用错误:应映射到Object2的listOfObject3Ids属性,而非不存在的d.listOfObject3.Id
  • 映射逻辑错误:需要从源数组的每个元素中提取Id,而非创建仅包含单个Id的数组

正确的映射代码

如果Object3.Id本身就是string类型:

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(obj3 => obj3.Id).ToArray()
   ));

如果Object3.Id是数值类型(比如int),需要转换为string:

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(obj3 => obj3.Id.ToString()).ToArray()
   ));

代码说明

  • s.listOfObject3?.Select(...):用空条件运算符?.避免源数组为null时抛出异常
  • Select(obj3 => obj3.Id):遍历源数组的每个Object3元素,提取其Id属性
  • .ToArray():将LINQ查询结果转换为数组,匹配目标属性的string[]类型

内容的提问来源于stack exchange,提问作者zaakm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:55:16