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

如何使用AutoMapper实现二维列表List<List<Item>>到List<List<Item2>>的映射

解决方案

该场景不需要编写自定义转换器,仅通过简单配置即可实现映射。

你原有代码的问题在于配置冗余,且没有告诉AutoMapper如何处理自定义集合类型ItemCollection。AutoMapper本身已经支持嵌套泛型集合的自动映射,只要配置了元素类型的映射规则,集合层的映射会自动处理,不需要单独为每一层集合显式声明映射。

修正后的核心配置

只需要保留两个映射规则即可:

var configuration = new MapperConfiguration(cfg =>
{
    // 配置基础元素的映射,因为属性名完全一致,不需要额外指定字段映射
    cfg.CreateMap<Item, Item2>();
    // 告诉AutoMapper将自定义集合类型ItemCollection当做其父类List<List<Item>>处理
    cfg.CreateMap<ItemCollection, List<List<Item2>>>().As<List<List<Item>>>();
});

相关说明

  • AutoMapper默认会自动处理实现了IEnumerable接口的类型的集合映射,只要元素类型的映射规则存在,不管嵌套多少层集合都可以自动转换,不需要为每一层List<>单独配置映射。
  • 你原有代码中显式声明的List<List<Item>>到List<List<Item2>>、List<Item>到List<Item2>的映射都是多余的,可以直接删除。
  • 因为Item和Item2的Name属性名完全一致,ForMember的配置也可以省略。

运行修正后的代码,输出结果就是你期望的[[{"Name":"item"}]]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:06:10