我有两个大型集合List<Class>
,具有数百个属性。
例如原始集合List<OriginalCollection>
和更新的集合List<UpdatedColleciton>
UpdatedCollection
将在某些列中包含值,这些列很可能不属于OriginalCollection
,并且UpdatedCollection
可能具有某些KeyColumn [ID Column],可能不属于OriginalCollection
,并且I正在接收OriginalCollection
中设置的数千个数据,并且UpdatedColletion
会在一段时间内增加记录。
我确实有一个要求,其中只有OriginalCollection
的空列或空列应由匹配的UpdatedCollection
值替换为ID,并且如果没有匹配的ID可用,则应从以下位置将这些记录添加到OriginalCollection
中: UpdatedCollection
。
我尝试过AutoMapper
,在其中尝试根据匹配ID用OriginalCollection
更新UpdatedCollection
,为此我找不到我的上述要求中的任何AutoMapper configuration
。
我正在寻找最有效的解决方案,该解决方案不应该影响性能,这就是为什么我没有采用典型的联合和交叉路口的方式,因为莫代尔拥有数百个资产,并且有成千上万的记录,而且我确实有很多我认为像AutoMapper
这样的属性比在循环中编写逻辑以检查所有数千条记录的每一列的值更好的选择。
请提出任何更好的,性能更高的解决方案,例如AutoMapper配置或任何其他.Net内置功能来实现此方案。
我还在AutoMapper.Collection
中也用https://github.com/AutoMapper/AutoMapper.Collection进行了检查,>
cfg.CreateMap<OrderItemDTO, OrderItem>().EqualityComparison((odto, o) => odto.ID == o.ID); Mapping OrderDTO back to Order will compare Order items list based on if their ID's match Mapper.Map<List<OrderDTO>,List<Order>>(orderDtos, orders);
但是它具有以下行为并且不能按我的要求正常工作
,具有数百个属性。例如原始收藏列表
AutoMapper
是已知的映射库,并且也具有很好的文档,但是无法找到有关AutoMapper.Collection
的详细文档,我已经研究过AutoMapper.Collection
,但未按我的要求提供解决方案。所以,我需要走传统路线。