[英]Multiple Conditional mapping in Automapper
我需要一些我正在做的映射的幫助。
我正在映射一個有兩個字段的模型
public ProductCategory
public string FirstType
public string SecondType
到另一個只有一個字段的模型
public string ProductType
現在我必須根據 ProductCategory 的內容將第一個或第二個類型映射到 ProductType。如果不滿足條件,則 ProductType 應該為 null
例如我需要這樣的東西:
.ForMember(dest => dest.ProductType, opt => opt.MapFrom(src =>
{
if (src.ProductCategory.Equals("something")
{
src.FirstType
}
else if (src.ProductCategory.Equals("something")
{
src.SecondType
}
else
{
null
}
}))
當然,語法是完全錯誤的,顯然是行不通的,我只是想解釋一下我想要實現的目標。
我有一個臨時解決方案
.ForMember(dest => dest.ProductType, opt => opt.MapFrom(src => src.ProductCategory.Contains("something") ? src.FirstType: src.SecondType))
但這並不完全是我需要的。
有什么建議?
提前致謝
為了避免使地圖代碼看起來非常混亂,您可以做的是將其實際分離為您確實知道需要檢查以分配正確值的方法。
這是代碼
.ForMember(dest => dest.ProductType, opt => opt.MapFrom(src => CalculateProductCategory(src.ProductCategory))) and then you write your own CalculateProductCategory
你的方法看起來像這樣
public ProductType CalculateProductCategory(ProductCategory category) {
if (productCategory.Equals("something")
{
return FirstType
}
else if (productCategory.Equals("something")
{
return SecondType
}
else
{
return null
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.