c#自动映射器如何将自动增量属性添加到目标投影?
我们有源对象“StockBase”和目标对象“StockDTO”。在将“StockBase”映射到“StockDTO”时,我们希望添加一个属性,该属性将给出集合的索引,即在“StockDTO”对象中自动递增1 例如,“库存”具有名称、所有者、颜色、保修等属性 虽然“StockDTO”具有Name、Owner+等属性,但我们希望添加自动递增id,以使集合中该股票的排名从1开始递增1c#自动映射器如何将自动增量属性添加到目标投影?,c#,automapper,C#,Automapper,我们有源对象“StockBase”和目标对象“StockDTO”。在将“StockBase”映射到“StockDTO”时,我们希望添加一个属性,该属性将给出集合的索引,即在“StockDTO”对象中自动递增1 例如,“库存”具有名称、所有者、颜色、保修等属性 虽然“StockDTO”具有Name、Owner+等属性,但我们希望添加自动递增id,以使集合中该股票的排名从1开始递增1 我读过,但是当在aftermap中将列表映射到列表而不复制内容时,有没有更好的方法可以做到这一点?我能想到的防止多次
我读过,但是当在aftermap中将列表映射到列表而不复制内容时,有没有更好的方法可以做到这一点?我能想到的防止多次迭代集合的唯一方法是这样的:
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;
});
公共类A{}
公共类B{public int Index{get;set;}}
var colA=新列表();
var colB=colA.Select((a,ix)=>
{
var b=映射器.Map(a);
b、 指数=ix+1;
返回b;
});
因此,代码只在集合中迭代一次,并使用Mapper
及其映射配置文件,此外,在投影期间还指定了自动递增属性
注意:通常,您不会使用静态
Mapper
类,而是使用注入的IMapper
实例。但是由于多次调用Mapper.map,可能会影响性能,这是唯一一个开发列表映射的用例。最新版本的AutoMapper应该缓存类型、配置文件等内容,因此,性能影响不应该是什么大问题。但是,您可以测试/测量它以完全确定。否则,您应该使用AfterMap中的选项,在这里您将再次遍历整个集合。