使用 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));
使用自动映射器获取第一个图像,即 '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));