linq 如何使用AutoMapper转换可为空的小数?

r55awzrz  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(114)

所以我的代码显示为:

CreateMap<EntityOne, ModelOne>()
.ForPath(dest => dest.Field1, opt => opt.MapFrom(src => src.Field1))

两个字段1都是可以为空的小数,我希望能够在Map时将值转换为2位小数。我认为我的最佳尝试是:

CreateMap<EntityOne, ModelOne>()
                .ForPath(dest => dest.Field1, opt => opt.MapFrom(src => src.Field1.HasValue ? Math.Round((decimal)src.Field1, 2, MidpointRounding.AwayFromZero) : null))

我得到的错误是:
无法从用法推断方法"IPathConfigurationExpression〈EntityOne,ModelOne,decimal?〉. MapFrom(Expression〈Func〈EntityOne,TSourceMember〉〉)"的类型参数。请尝试显式指定类型参数。

b1zrtrql

b1zrtrql1#

我非常肯定你可以通过将Math.Round的结果转换为一个可以为空的小数来解决这个问题:

opt.MapFrom(src => src.Field1.HasValue 
         ? (decimal?)Math.Round((decimal)src.Field1, 2, MidpointRounding.AwayFromZero) 
         : null)

这样,调用 * 应该 * 能够“从用法推断”

相关问题