2017-11-15 6 views
1

Automapper가 특정 값과 같을 경우에만 dsetination 값을 변경하려고합니다. 그래서 원본 값이 무엇인지 상관하지 않습니다. 매핑하기 전에 대상 값을보고 싶습니다. 그리고 0과 같으면 매핑이 0보다 큰 경우 매핑을 원합니다. 매핑하지 않으려합니다.0으로 동등한 경우에만 automapper 변경 대상 값 사용

지금까지는이 방법을 사용했지만 다른 방법은 생각해 낼 수 없습니다. 소스를보고 소스 값이 조건을 충족 시키면 맵핑됩니다. 다음과 같습니다

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

남자, 당신은 너무 닫힙니다!

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