假设我有3个类State、City和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
California ,,,,圣何塞
California ,,,,洛杉矶
Florida ,,,,,,,,迈阿密
我想将这个列表映射到一个State对象列表,该列表应该有2个条目(California, Florida)。"California"对象的Cities字段应该有2个条目(San Jose, Los Angeles),"Florida"对象的Cities字段应该有1个条目(Miami)。
我知道有很多方法可以做到这一点,但似乎没有一个是简单或有效的。实现这一目标的最佳方式是什么?
注意:我更喜欢使用AutoMapper来映射State对象列表和StateCities对象列表。
您可以根据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()));