You need to enable JavaScript to run this app. 使用AutoMapper的CreateMap映射列表时如何访问列表元素的属性
优惠活动
大模型
产品
解决方案
定价
更多

使用AutoMapper的CreateMap映射列表时如何访问列表元素的属性

解决方案

AutoMapper原生支持集合类型的自动映射,不需要显式为List<T>、IEnumerable<T>这类集合类型创建映射规则,你只需要先配置集合元素的类型映射即可:

  • 第一步:配置CouponCsvItem到Coupon的单对象映射,在单对象映射中配置需要自定义解析的属性
x.CreateMap<CouponCsvItem, Coupon>()
    .ForMember(dest => dest.SchoolType, opt => opt.MapFrom<SchoolResolver>());
// 不需要额外创建List之间的映射规则
  • 第二步:直接调用映射方法转换集合即可,AutoMapper会自动遍历每个元素执行你配置的单对象映射规则
var couponList = mapper.Map<List<Coupon>>(csvItemList);

如果你确实需要自定义整个集合的转换逻辑,才需要配置集合级别的ConvertUsing,示例如下:

x.CreateMap<List<CouponCsvItem>, List<Coupon>>()
    .ConvertUsing((source, destination, context) => 
    {
        var result = new List<Coupon>();
        foreach(var item in source)
        {
            // 手动处理每个元素的属性映射,包括调用SchoolResolver的逻辑
            var coupon = new Coupon();
            coupon.SchoolType = new SchoolResolver().Resolve(item, coupon, null, context);
            // 补充其他属性映射逻辑
            result.Add(coupon);
        }
        return result;
    });

第一种方式是官方推荐的标准用法,配置更简单,也能完全满足单个元素属性自定义解析的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 04:12:02