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);
如果准备开始是假的,那么我需要将 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);