我的.NET项目中有EntityA到DtoA类,以及2种automapper用法。
第一个是:
var result1 = dbContext
.Set<EntityA>()
.Where(...)
.ProjectTo<DtoA>(new { param1 = true } )
.ToList();
第二个:
var aList = dbContext
.Set<EntityA>()
.Where(...)
.ToList();
var result = Mapper
.Map<DtoA[]>(aList, options => options.Items["param1"] = true);
我想在两种情况下都能使用可重用的映射。对于基于param1值的某些字段,此映射必须是有条件的。 如何在单个 CreateMap <,>()。ForMember() API中实现它?
答案 0 :(得分:0)
我没有完全得到所需的逻辑,但是您可以将任何逻辑放入这样的方法中:
c.CreateMap<A, B>()
.ForMember(dest => dest.Items, opt => opt.ResolveUsing(src =>
{
if (src.Items["param1"] == true)
{
// Do whatever
}
return /*do whatever else*/;
}));
是您想要的还是我误解了这个问题?
编辑: 我再试试看:
var result1 = dbContext
.Set<EntityA>()
.Where(...)
.Select(c => mapper.Map<A>(c))
.ToList();
但是仍然不能完全理解您想要什么。您能否举一个数据示例,例如应该将哪个集合转换为哪个集合?