我正在尝试使用Automapper v3从我的Post结构映射到我的Postmodel类。我需要将术语名称映射到我的Categories数组,但前提是Type等于"Category"。
这是我的代码
public class NewsModel
{
public NewsModel(int id)
{
Mapper.Initialize(cfg =>
{
cfg.CreateMap<Post, PostModel>();
});
Posts = new List<PostModel> {Mapper.Map<PostModel>(_newsGetter.GetItem(id))};
}
public List<PostModel> Posts { get; set; }
}
映射到此类
public class PostModel
{
public String[] Categories { get; set; }
}
此结构的地图
public struct Post
{
public Term[] Categories { get; set; }
}
public Struct Term
{
public string Name{ get; set; }
public string Type{ get; set; }
}
非常感谢您的帮助。
最简单的解决方案是将过滤后的类别从Post
映射到PostModel
。
cfg.CreateMap<Post, PostModel>()
.ForMember(pm => pm.Categories
, o => o.MapFrom(p => p.Categories.Where(t => t.Name != "Category")));
然后使用ConvertUsing
将Term
简单地转换为string
cfg.CreateMap<Term, string>().ConvertUsing(t => t.Name);