早上好。我需要根据正在“开票”的项目更新订单中项目的映射。目前,没有订单项的条件映射。我一直在查看 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。我确定这可能是一个简单的过程,我只是找不到示例。谢谢你的推荐!
您可以使用
LINQ
来过滤要“开具发票”的类型:
.ForMember(dest => dest.OrderItems, opt => opt.MapFrom(src => src.OrderLine.Where(t => t.Quantity.FirstOrDefault().Type == "Invoiced")))