【问题标题】:automappewr map null value to destination if source value is zero如果源值为零,则 automappewr 将空值映射到目标
【发布时间】:2017-11-28 15:15:10
【问题描述】:

我从 dto 映射到视图模型。 dto 有一个 double 属性,如果该值为零,我想将其映射为 null(这会阻止基础架构图在为 null 的情况下绘制一个点,因此不会显示任何内容)

我有这个,但它不起作用我需要它映射到 null

.ForMember(x => x.AveragePrice, opt => opt.ResolveUsing(src =>
            {
                if(src.AveragePrice == 0)
                {
                    //need null here
                   return double.NaN;
                }
                else
                {
                    return src.AveragePrice;
                }

            }));

【问题讨论】:

  • 如果你的src.AveragePrice 不是Nullable<double>,你就不能返回null
  • 您可以为您的 DTO 实现 double? 吗?

标签: c# automapper nul


【解决方案1】:

您不需要解析器。您可以只使用 MapFrom。

还要确保您的 AveragePrice 属性在您的视图模型中为 double? 类型。

.ForMember(x => x.AveragePrice, opt => opt.MapFrom(src => src.AveragePrice == 0 ? (double?)null : Math.Abs(src.AveragePrice)))

【讨论】:

  • 这很有效,谢谢,不过我还有一个问题,我需要检查多个条件。如果源为零,则映射为空,如果为负值,则使其为正。我知道 automapper 有多个条件,但我不知道在这种情况下如何应用它,有人可以帮我吗?
  • @proteus 对于这种特殊情况,您甚至不需要第二次检查 - 您只需致电 Math.Abs。查看我的更新答案
  • 哇!这么简单,我怎么没想到呢:-) 谢谢
猜你喜欢
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
  • 2021-01-29
  • 2021-11-26
  • 1970-01-01
相关资源
最近更新 更多