AutoMapper Условное сопоставление - PullRequest
0 голосов
/ 04 октября 2019

Если готовность к запуску равна false, то мне нужно установить ActualStartDate по умолчанию. Или, может быть, вместо этого я сделаю nullable.

В коллекции RequestDates всегда будет только 1 запись.

    public class EngagementDto
    {
        #region Public Properties

        public bool ReadyToStart { get; set; }

        public IEnumerable<RequestDateDto> RequestDates { get; set; }

        #endregion
    }

    public class RequestDateDto
    {
        #region Public Properties

        public DateTime ActualStartDate { get; set; }

        #endregion
    }   

Не уверен, правильно ли я поступлю ... но эточто у меня так далеко.

            CreateMap<EngagementDto, RequestDateDto>()
                .ForMember(dest => dest.ActualStartDate, opt =>
                {
                    opt.Condition((src, dest) => !src.ReadyToStart);
                    opt.MapFrom(dest => dest.);
                }

1 Ответ

2 голосов
/ 04 октября 2019

Попробуйте, я думаю, это может работать!

 CreateMap<EngagementDto, RequestDateDto>()
                ForMember(dest => dest.RequestDates, 
                   opt => opt.MapFrom
                   (src => dest.ReadyToStart ? "your default value" : src.ActualStartDate));

способ номер два

измените вашу модель следующим образом

public IEnumerable<RequestDateDto> RequestDates { get; set; } = null

и затем

CreateMap<EngagementDto,RequestDateDto>()
    .ForMember(dest => dest.RequestDates, opt => {
        opt.PreCondition(src => (src.ReadyToStart));
        opt.MapFrom(src => src.ActualStartDate);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...