如何在 Automapper 中映射数组对象的值?

问题描述 投票:0回答:1

我有以下结构,我想将

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))
c# automapper
1个回答
0
投票

我通过使用

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));
}
© www.soinside.com 2019 - 2024. All rights reserved.