我正在尝试映射两个不同的对象
CreateMap<A, B>()
.ForMember(x => x.Quantity, y => y.MapFrom(z =>z.QuantityList.First().TotalQuantity))
Run Code Online (Sandbox Code Playgroud)
我想另外分配x.Quantity = 1 if z =>z.QuantityList.First().TotalQuantity == 0上述映射。
这是如何完成的ForMember()?
有几个选项。您可以将 if/else 包装在函数中,也可以使用if {}块,但在这种情况下,最简单的方法可能是使用内联三元运算符:
例如:
.ForMember(dest => dest.Quantity, opt => opt
.MapFrom(src => (src.Quantitylist.First().TotalQuantity == 0) ? 1
: src.QuantityList.First().TotalQuantity))
Run Code Online (Sandbox Code Playgroud)
虽然您已经通过三元运算符得到了答案,但我认为还有一些重要的补充:
您始终可以{}在 lambda* 中使用代码块:
.MapFrom(src => {
var quantity = src.Quantitylist.First().TotalQuantity;
if (quantity == 0)
{
return 1;
}
return quantity;
})
Run Code Online (Sandbox Code Playgroud)
在这种情况下,三元运算符很好,但如果您需要更高级的东西,请记住还有另一种解决方案;)
*不包括像 Linq2Sql/EF 这样的异国 linq 提供程序