gpt4 book ai didi

automapper - AutoMapper字典拼合

转载 作者:行者123 更新时间:2023-12-04 13:42:20 26 4
gpt4 key购买 nike

我有一个Dictionary<User, bool>
用户如下:

 public class User {
public string Username { get; set; }
public string Avatar { get; set;
}

第二种类型bool指示此用户是否是已登录用户的 friend 。
我想将此字典拼合成 List<UserDto> UserDto定义为:

public class UserDto {
public string Username { get; set; }
public string Avatar { get; set; }
public bool IsFriend { get; set; }
}
IsFriend代表字典的值。

我怎样才能做到这一点?

最佳答案

您应该只用一个映射就可以做到这一点:

您需要将KeyValuePair<User, bool>映射到UserDto。为了使AutoMapper能够将字典的内容映射到我们最终要创建的List<T>的内容,这是必要的(更多说明可以在this answer中找到)。

Mapper.CreateMap<KeyValuePair<User, bool>, UserDto>()
.ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.Key.UserName))
.ForMember(dest => dest.Avatar, opt => opt.MapFrom(src => src.Key.Avatar))
.ForMember(dest => dest.IsFriend, opt => opt.MapFrom(src => src.Value));

然后,在 .Map调用中使用映射:

Mapper.Map<Dictionary<User, bool>, List<UserDto>>(...);

您不需要自己映射集合,因为只要您将集合的内容相互映射(在我们的示例中, DictionaryList),AutoMapper便可以处理将 KeyValuePair<User, bool>映射到 UserDto的操作。

编辑:这是另一个解决方案,不需要将每个 User属性映射到 UserDto:

Mapper.CreateMap<User, UserDto>();
Mapper.CreateMap<KeyValuePair<User, bool>, UserDto>()
.ConstructUsing(src => Mapper.Map<User, UserDto>(src.Key))
.ForMember(dest => dest.IsFriend, opt => opt.MapFrom(src => src.Value));

1使用AutoMapper 2.0

关于automapper - AutoMapper字典拼合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10519460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com