Automapper 中的条件映射列表条目

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

早上好。我需要根据正在“开票”的项目更新订单中项目的映射。目前,没有订单项的条件映射。我一直在查看 Automapper 中的条件和先决条件映射,但我不确定如何为项目列表执行此操作。

这是目前的样子。

     CreateMap<OrderDto, Order>()
            .ForMember(dest => dest.TransactionId, opt => opt.MapFrom(src => CreateTransactionId(src.OrderHeader)))
            .ForMember(dest => dest.TransactionType, opt => opt.MapFrom(src => MapTransactionType(src.OrderHeader.OrderType)))
            .ForMember(dest => dest.OrderItems, opt => opt.MapFrom(src => src.OrderLine ) )
            .ReverseMap();
        
        CreateMap<OrderLineDto, OrderItem>()
            .ForMember(dest => dest.LineNumber, opt => opt.MapFrom(src => src.LineNumber))
            .ForMember(dest => dest.Upc, opt => opt.MapFrom(src => src.Item.Upc))
            .ForMember(dest => dest.Sku, opt => opt.MapFrom(src => src.Item.Upc))
            .ReverseMap();

因此,我需要添加的逻辑是仅映射在 orderLines.quantity(list).type='Invoiced' 中具有条目的 OrderLines。我确定这可能是一个简单的过程,我只是找不到示例。谢谢你的推荐!

c# automapper
1个回答
0
投票

您可以使用

LINQ
来过滤要“开具发票”的类型:

 .ForMember(dest => dest.OrderItems, opt => opt.MapFrom(src => src.OrderLine.Where(t => t.Quantity.FirstOrDefault().Type == "Invoiced")))
© www.soinside.com 2019 - 2024. All rights reserved.