我有以下结构,我想将
Parent.StockNumber
分配给Supplier.StockNumber
。由于 Supplier
是数组,我不确定如何在 Automapper 中使用 .ForEach
。
代码:
public class Parent
{
public int ParentId { get; set; }
public long StockNumber { get; set; }
public DateTimeOffset? EarliestPaymentDate { get; set; }
public List<Supplier> Suppliers { get; set; }
}
public class Supplier
{
public int SupplierId { get; set; }
public long StockNumber { get; set; }
public int ParentId { get; set; }
}
public class ParentDto
{
public int ParentId { get; set; }
public long StockNumber { get; set; }
public DateTimeOffset? EarliestPaymentDate { get; set; }
public List<Supplier> Suppliers { get; set; }
}
public class SupplierDto
{
public int SupplierId { get; set; }
public long StockNumber { get; set; }
public int ParentId { get; set; }
}
映射器:
CreateMap<ParentDto, Parent>()
// Single value assignment
.ForMember(dest => dest.EarliestPaymentDate, opt => opt.MapFrom(src => src.EarliestPaymentDateTime))
// .Suppliers is an array and not sure how to do mapping here.
.ForMember(dest => dest.Suppliers, opt => opt.MapFrom(src => src.StockNumber))
;
我试过跟随,但这绝对是错误的。
.ForMember(dest => dest.Suppliers.ForEach(x => x.StockNumber), opt => opt.MapFrom(src => src.StockNumber))
我通过使用
AfterMap
找到了解决方案。
代码:
public MappingProfile()
{
CreateMap<ParentDto, Parent>()
.ForMember(dest => dest.EarliestPaymentDate, opt => opt.MapFrom(src => src.EarliestPaymentDateTime))
.AfterMap(HandleArrayProperties);
}
private static void HandleArrayProperties(ParentDto parentDto, Parent parent)
{
parent.Suppliers.ForEach(x => x.StockNumber = Convert.ToInt64(parentDto.StockNumber));
}