Automapper добавление сопоставления с дополнительной внешней коллекцией - PullRequest
0 голосов
/ 21 октября 2019

У меня есть автоматическое сопоставление autopper, но у меня есть внешняя коллекция, которую я хочу использовать для обогащения исходящего класса.

Я, очевидно, могу купить список в классе профиля, но этот список взят из API-интерфейса, который я вызову, прежде чем запускать свой автомаппер во время выполнения. Ниже приведен пример грубого желания увидеть код страны в классе игрока на основе названия страны.

Отображение в моем классе реализации интерфейса профиля

CreateMap<StagePlayer, Player>()
    .ForMember(x => x.Name, x => x.MapFrom(y => y.PlayerName))
    .ForMember(x => x.SomethingA, x => x.MapFrom(y => y.Something))
    .ForMember(x => x.CountryName, x => x.MapFrom(y => y.CountryName )) //obviously don't need this but just for the sake of the example
    //.ForMember(x => x.CountryCode = countries.FirstOrDefault(y => y.CountryName == x.CountryName)?.CountryCode)
    ;

Фактическое использование.

var playersOut = playersIn.Select(s => _mapper.Map<Player>(s)).ToList();
playersOut.ForEach(x => x.CountryCode = countries.FirstOrDefault(y => y.CountryName == x.CountryName)?.CountryCode);

Я хочу установить ForEach для кода страны в моем профиле, но вынужден передать список стран в вызов сопоставления.

Я не могу найти никаких примеров этого, и я уверен, что упускаю что-то чрезвычайно очевидное, но не могу увидеть это в документации на автомаппер.

1 Ответ

1 голос
/ 21 октября 2019

Пока переменная стран доступна в коде сопоставления, вы можете просто сделать что-то вроде этого

CreateMap<StagePlayer, Player>()
    .ForMember(x => x.Name, x => x.MapFrom(y => y.PlayerName))
    .ForMember(x => x.SomethingA, x => x.MapFrom(y => y.Something))
    .ForMember(x => x.CountryName, x => x.MapFrom(y => y.CountryName )) //obviously don't need this but just for the sake of the example
    .ForMember(x => x.CountryCode, x => x.MapFrom(y => countries.FirstOrDefault(z => z.CountryName == y.CountryName)?.CountryCode));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...