使用Automapper将字符串映射到List <string>,反之亦然

时间:2016-01-26 07:28:09

标签: c# asp.net-mvc automapper

基本上我有这个类,用我的数据库代表1:1

public class User
{
    public int UserID { get; set; }
    public string Username { get; set; }
    public string Role { get; set; }
}

我有这个viewmodel

public class UserEditViewModel
{
    public UserEditViewModel()
    {
        Roles = new List<string>();
    }

    public int UserID { get; set; }
    [Required]
    public string Username { get; set; }
    [Required]
    public List<string> Roles { get; set; }
}

我不知道如何在这些之间进行映射2.我当前的设置:

Mapper.CreateMap<UserEditViewModel, User>().ReverseMap();

3 个答案:

答案 0 :(得分:4)

这里有类似于你的问题,请你查看AutoMapper: Collection to Single string Property

PS:这是将集合映射到单个字符串属性的示例,可能您的示例应如下所示;

splines=false

映射下面的实例;

Mapper.CreateMap<User, UserEditViewModel>()
    .ForMember(dest => dest.Roles,
    m => m.MapFrom(src => src.Role.Split(',').ToList()));

enter image description here

答案 1 :(得分:1)

如果要连接字符串列表中的所有值,则需要使用ForMember。在mapper中,您需要使用UserEditViewModel方法。

UserMapper.CreateMap<User, UserEditViewModel>().ForMember(user => user.Role, opt => opt.MapFrom(userEdit => string.Join(", ", userEdit.Roles)));

User

UserEditViewModelMapper.CreateMap<UserEditViewModel, User>().ForMember(userEdit => userEdit.Roles, opt => opt.MapFrom(user => user.Role.Split(",").ToList()));

.AfterMap((src,dest) => dest.Roles.Add(src.Role))

答案 2 :(得分:0)

我认为您应该能够使用AutoMapper AfterMap,如下所示:

"[1,2,3,4,5]"

相信答案:Map a property to a collection item

相关问题