c# - 使用 AutoMapper 将字符串列表映射到对象列表

标签 c# automapper

我有一个域和实体类,如下所示:

public class DomainUser
{
    public string Username {get;set;}
    public IList<string> PhoneNumbers {get;set;}
}

public class EntityUser
{
    public string Name {get;set;}
    public IList<Phone> PhoneNumbers {get;set;}
}
public class Phone
{
    public int Id {get;set;}
    public string PhoneNumber {get;set;}
}

我正在尝试映射 DomainUserEntityUser使用自动映射器。但我不知道如何从 IList<string> 映射至 IList<Phone>并填写 PhoneNumer属性(property)。

我的 CreateMap看起来像这样:
Config.CreateMap<DomainUser, EntityUser>()
    .ForMember(dest => dest.Username, opts => opts.MapFrom(src => src.Username)
    .ForMember(entity => entity.PhoneNumbers.Select(x => x.PhoneNumber), opts => opts.MapFrom(domain => domain.PhoneNumbers) // This doesn't work, but hopefully shows what I'm trying to achieve

如何使用 AutoMapper 解决此问题?

最佳答案

这里有运行示例:

Mapper.Initialize(cfg =>
        {
            cfg.CreateMap<string, Phone>().ForMember(dest => dest.PhoneNumber, m => m.MapFrom(src => src)); // <-- important line!
            cfg.CreateMap<DomainUser, EntityUser>()
                .ForMember(dest => dest.Name, m => m.MapFrom(src => src.Username))
                .ForMember(dest => dest.PhoneNumbers, m => m.MapFrom(src => src.PhoneNumbers));
        });
        DomainUser du = new DomainUser {PhoneNumbers = new List<string> {"123", "1234", "12345"}};
        EntityUser eu = Mapper.Map<DomainUser, EntityUser>(du);

关于c# - 使用 AutoMapper 将字符串列表映射到对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48974326/

相关文章:

c# - C# 的对象缓存

c# - AutoMapper 从子级获取属性

c# - 使用界面与具体 map 的 AutoMapper 映射

wcf - 如何在 Post Action 中使用 AutoMapper

c# - 当向参数提供某些值时生成编译器警告

c# - 如何使用 mysql 数据库中的数据填充 GridView ? (C# UWP)

c# - 自动映射器从内部属性映射到目标类

asp.net - 自动映射器-映射器已初始化错误

javascript - 多个textboxex并在angularjs中插入查询

c# - 如何组合两个按时间戳排序然后分组的流?