只有在等于0时才使用automapper更改目标值

时间:2017-11-15 09:43:54

标签: 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);
            });

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

1 个答案:

答案 0 :(得分:2)

伙计,你太近了!

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);
     });