我们有源对象" StockBase"和目标对象为" StockDTO"。在映射" StockBase"对于" StockDTO",我们想要添加一个属性,该属性将给出集合索引,即在" StockDTO"中自动递增1。对象
例如" StockBase"具有名称,所有者,颜色,保修等属性。
而" StockDTO"拥有像Name,Owner +这样的属性我们想要添加Auto-increment-id,它会给我们从1开始收集该股票的等级并增加1。
我读了this但是在将列表映射到列表而没有在aftermap中复制内容时,有没有更好的方法呢?
答案 0 :(得分:1)
防止迭代收集不止一次的唯一方法就是这样:
public class A { }
public class B { public int Index { get;set; } }
var colA = new List<A>();
var colB = colA.Select((a, ix) =>
{
var b = Mapper.Map<B>(a);
b.Index = ix + 1;
return b;
});
因此,代码只在集合中迭代一次,并使用Mapper
及其映射配置文件,此外还会在投影期间分配自动递增属性。
注意:通常,您不会使用静态Mapper
类,而是使用注入的IMapper
实例。