C # Automap свойства в массив - PullRequest
1 голос
/ 27 марта 2019

У меня есть списки двух отдельных Моделей, которые мне нужно объединить в родительскую Модель, которая также является списком.Например:

Дочерняя модель 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;}
}

Вот как я пытаюсь сопоставить список пряных предметов и список сладких предметов сparent 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 моделью одновременно?

1 Ответ

2 голосов
/ 27 марта 2019

Вы можете попробовать что-то вроде:

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();

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...