簡體   English   中英

c#自動映射器如何向目標投影添加自動增量屬性?

[英]c# auto mapper how to add auto-increment property to destination projection?

我們有源對象“StockBase”和目標對象“StockDTO”。 在將“StockBase”映射到“StockDTO”時,我們希望添加一個屬性,該屬性將提供集合索引,即在“StockDTO”對象中自動遞增 1。

例如,“StockBase”具有名稱、所有者、顏色、保修等屬性。

雖然“StockDTO”具有 Name、Owner + 等屬性,但我們希望添加 Auto-increment-id,它可以為我們提供該 Stock 在集合中的排名,從 1 開始並以 1 遞增。

我讀了這個,但是在將列表映射到列表而不在 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;
});

因此,代碼僅在集合中迭代一次,並使用Mapper及其映射配置文件,此外在投影期間分配自動遞增屬性。

注意:通常,您不會使用靜態Mapper類,而是使用注入的IMapper實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM