c#auto mapper如何将自动增量属性添加到目标投影?

时间:2018-02-09 07:29:00

标签: c# automapper

我们有源对象" StockBase"和目标对象为" StockDTO"。在映射" StockBase"对于" StockDTO",我们想要添加一个属性,该属性将给出集合索引,即在" StockDTO"中自动递增1。对象

例如" StockBase"具有名称,所有者,颜色,保修等属性。

而" StockDTO"拥有像Name,Owner +这样的属性我们想要添加Auto-increment-id,它会给我们从1开始收集该股票的等级并增加1。

我读了this但是在将列表映射到列表而没有在aftermap中复制内容时,有没有更好的方法呢?

1 个答案:

答案 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实例。