假设我有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对象列表。
答案 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()));