使用 ASP.Net Core automapper 并尝试检查该值是否为空,以便我可以有条件地设置该值

Using ASP.Net Core automapper and trying to check if the value is null so I can set the value conditionally

使用自动映射器获取第一个图像,即 'IsMain',如果不存在图像,会将 PhotoUrl 设置为 null。但现在我想检查图像是否为空并添加另一个条件以将 url 设置为其他内容,例如

if (src.Photos.FirstOrDefault(p => p.IsMain) == null) {
   if (user.gender == 'male') {
     // set PhotoUrl to something here
   }
}

这是我的自动映射器创建地图调用

CreateMap<User, UserForListDto>()
  .ForMember(dest => dest.PhotoUrl, opt => {
      opt.MapFrom(src => src.Photos.FirstOrDefault(p => p.IsMain).Url);
   })
});

我试过添加这样的扩展,但如果值为空,它甚至都不会被调用。

opt.MapFrom(src => src.Photos.FirstOrDefault(p => p.IsMain).Url.GetDefaultMemberImage(src.Gender));

public static string GetDefaultMemberImage(this string photoUrl, string gender) {
        if (photoUrl == null) {
            if (gender == "male") {
                return "url1";
            } else {
                return "url2";
            }
        } else {
            return photoUrl;
        }
    }

我想我可以将 "src.Photos.FirstOrDefault()" 更改为其他内容,但不确定是什么?

对于opt.MapFrom,您可以使用表达式来检查src.Photos.FirstOrDefault(p => p.IsMain) 是否为空。

试试

CreateMap<UserPhoto, UserPhotoDto>()
    .ForMember(dest => dest.PhotoUrl, opt => opt.MapFrom(src =>
    src.Photos.FirstOrDefault(p => p.IsMain) == null ? (src.Gender == "male" ? "url1" : "url2") : src.Photos.FirstOrDefault(p => p.IsMain).Url));