You need to enable JavaScript to run this app. 使用匿名类型时如何配置Automapper Profile实现映射
优惠活动
大模型
产品
解决方案
定价
更多

使用匿名类型时如何配置Automapper Profile实现映射

结论

完全可以通过AutoMapper的Profile配置实现匿名类型到ArtistaTipoDizionarioViewModel的直接映射,无需额外创建中间实体类。


具体配置步骤

1. 编写Profile配置文件

创建ArtistaTipoDizionarioViewModelProfile.cs文件,参考以下规则编写映射逻辑:

using AutoMapper;

// 此处替换为你项目中对应实体、ViewModel的实际命名空间
using YourProject.EntityNamespace;
using YourProject.ViewModelNamespace;

public class ArtistaTipoDizionarioViewModelProfile : Profile
{
    public ArtistaTipoDizionarioViewModelProfile()
    {
        // 源类型指定为object适配匿名类型,通过dynamic访问匿名类的属性
        CreateMap<object, ArtistaTipoDizionarioViewModel>()
            // 示例:ViewModel的Id属性映射自tipo的Id字段,按需替换为你的实际属性名
            .ForMember(dest => dest.Id, opt => opt.MapFrom(src => ((dynamic)src).tipo.Id))
            // 示例:ViewModel的Nome属性映射自tipo的Nome字段
            .ForMember(dest => dest.Nome, opt => opt.MapFrom(src => ((dynamic)src).tipo.Nome))
            // 示例:ViewModel的Versione属性映射自storico的Versione字段
            .ForMember(dest => dest.Versione, opt => opt.MapFrom(src => ((dynamic)src).storico.Versione))
            // 其余属性按照上述规则逐一配置即可
            ;
    }
}

2. 简化原有业务代码

配置生效后,原有手动遍历映射的逻辑可以简化为批量映射,代码更简洁:

var query = from tipo in _artistaTipoRepository.GetAll()
            join storico in _artistaTipoStoricoRepository.GetAll()
                on tipo.Id equals storico.Id
            where storico.Versione == 0
            select new 
            {
                tipo,
                storico 
            };

var entities = await query.ToListAsync();
// 直接批量映射,无需手动循环
var result = Mapper.Map<List<ArtistaTipoDizionarioViewModel>>(entities);
return await Task.FromResult(result);

注意事项

  • 映射配置中访问的匿名类属性名tipo、storico必须和LINQ查询中定义的匿名类属性名完全一致,大小写严格匹配
  • 需将该Profile注册到AutoMapper全局配置中,若你的项目已配置自动扫描程序集内的Profile,只需保证该类在扫描范围内即可生效
  • 若需要类型安全的映射,可以自定义IValueResolver实现,普通业务场景下使用dynamic的性能损耗可以忽略不计

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 11:27:01