我有两个单独的模型的列表,我需要将它们合并到一个同样是列表的父模型中。例如:
子模型1 :
public class Sweet
{
public int SweetLevel {get; set;}
public bool IsSweet {get; set;}
}
子模型2 :
public class Spicy
{
public int IsSpicy {get; set;}
public bool SpiceLevel {get; set;}
}
我正在尝试将1&2子模型合并到父模型。
public class FoodItem
{
public int SweetLevel {get; set;}
public bool IsSweet {get; set;}
public bool IsSpicy {get; set;}
public int SpiceLevel {get; set;}
}
这是我尝试将辛辣食品列表和甜食品列表映射到父FoodItem的方法。
List<Sweet> listOfSweetItems = GetListOfSweetItems();
List<Spicy> listOfSpicyItems = GetListOfSpicyItems();
// Map the Sweet items
var mappedSweetItems = Mapper.Map<List<FoodItem>>(listOfSweetItems); // this maps correctly
// Map the Spicy items
var mappedSpicyItems = Mapper.Map<List<FoodItem>>(listOfSpicyItems); // this maps correctly
这些都是独立工作的,但是我想同时将它们映射到同一个FoodItem对象中,这样一轮迭代后看起来就像:
[{
SweetLevel: 5,
IsSweet: true,
SpicyLevel: 1,
IsSpicy: false
} , ...]
如何将我的Sweet
和Spicy
模型同时映射到父FoodItem
模型中?
答案 0 :(得分:2)
您可以尝试以下方法:
Mapper.Initialize(config =>
{
config.CreateMap<Sweet, FoodItem>()
.ForMember(f => f.IsSpicy, o => o.Ignore())
.ForMember(f => f.SpiceLevel, o => o.Ignore());
config.CreateMap<Spicy, FoodItem>()
.ForMember(f => f.IsSweet, o => o.Ignore())
.ForMember(f => f.SweetLevel, o => o.Ignore());
});
// ...
var foodItems = Mapper.Map<List<FoodItem>>(listOfSweetItems);
foodItems = foodItems
.Zip(listOfSpicyItems, (foodItem, spicyItem) => Mapper.Map(spicyItem, foodItem))
.ToList();
希望有帮助!