如何使用automapper将非规范化数据映射到复杂对象?

时间:2016-09-26 21:40:33

标签: automapper

假设我有3个州State和City and StateCities:

public class State {
   public string StateName;
   public List<City> Cities;
}

public Class City {
   public string CityName;
}

public Class StateCities {
   public string StateName;
   public string CityName;
}

我有3个StateCities对象的列表,其中包含以下数据(非规范化):

Statename的CITYNAME

加州圣何塞

加州洛杉矶

佛罗里达迈阿密

我想将此列表映射到State对象列表中,该列表应包含2个条目(California,Florida)。 “加利福尼亚”对象的城市字段应该有2个条目(圣何塞,洛杉矶),“佛罗里达”对象的城市字段应该有1个条目(迈阿密)。

我知道有多种方法可以做到这一点,但似乎没有一种简单或有效。实现这一目标的最佳方法是什么?

注意:我更喜欢使用AutoMapper来映射State和State对象列表以及StateCities对象列表。

1 个答案:

答案 0 :(得分:2)

您可以按StateName对StateCitiesList进行分组,然后映射组

cfg.CreateMap<StateCities, City>()
            .ForMember(dest => dest.CityName, opt => opt.MapFrom(src => src.CityName));
cfg.CreateMap<IGrouping<string, StateCities>, State>()
            .ForMember(dest => dest.Cities, opt => opt.MapFrom(src => src.ToList()));