仅当它等于 0 时才使用 automapper 更改目标值

Yur*_*rev 5 c# automapper

我试图让 Automapper 仅在等于特定值时更改 dsetination 值。所以我不在乎源值是什么我只想在映射之前查看目标值,如果它等于 0 那么我想做映射,如果它 >0 那么我不想映射它。

到目前为止,我只能想出一种方法来做到这一点,但反过来。它查看源,如果源值满足它将映射的条件。看起来像这样:

 CreateMap<SurveyResource, Survey>()

            .ForMember(dest => dest.ClientId, opt =>
            {
                   opt.Condition(src => src.ClientId == 0);
                   opt.MapFrom(src => src.ClientId);
            });
Run Code Online (Sandbox Code Playgroud)

这将看起来像 SurveyResource ClientId 值,如果它等于 0,那么它将粘贴 0 到目的地(即,它将粘贴客户端 ID 的当前源值)。有谁知道如何以相反的方式做到这一点?我是否必须使用自定义值解析器?

小智 7

伙计,你离我太近了!

CreateMap<SurveyResource, Survey>()
    .ForMember(dest => dest.ClientId, opt =>
    {
         opt.Condition((src, dest) => dest.ClientId == 0);// suppose dest is not null.
         opt.MapFrom(src => src.ClientId);
     });
Run Code Online (Sandbox Code Playgroud)