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



假设我有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()));

最新更新