AutoMapper 条件映射

AutoMapper Conditional Mapping

如果准备开始是假的,那么我需要将 ActualStartDate 设置为默认值。或者,也许我会做一个可空的。

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

试试这个,我认为它可以工作!

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