Automapper将源列表项附加到目标列表

时间:2015-06-09 09:12:00

标签: automapper

我正在尝试映射List<string>属性,但我希望目标对象始终具有默认值。在源对象列表上可以为空,也可以包含其他值。

如果列表为空,则Destination属性将仅包含构造函数中定义的默认值。

如果列表包含一些数据,则Source值应附加在列表中。

这是我的代码:

    List<string> _accessRights;
    public User()
    {
        _accessRights = new List<string>() { "user" };
    }
    public List<string> AccessRights
    {
        get { return _accessRights; }
        set { _accessRights = value; }
    }

以下是我将如何使用它的示例。

UserModel user = new UserModel() { access_rights = new List<string>() { "power_user", "admin" } };
        User dbUser = Mapper.Map<User>(user);

因此,我希望在数据库中保存user, power_user, admin。 如果access_rightsnull,那么我希望只有user

这可能吗?

1 个答案:

答案 0 :(得分:2)

您可以像这样创建地图:

Mapper.CreateMap<UserModel, User>()
      .ForMember(user => user._accessRights, opt => opt.MapFrom(src => src.accessRights != null ?
        src.accessRights.Union(new User()._accessRights) : new User()._accessRights));