自动映射器 - IQueryable 扩展和内存中的条件映射



我的.NET项目中有类EntityA到DtoA和2种自动映射器的用法。

第一个是:

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 ?

我没有完全得到你想要的逻辑,但你可以将任何逻辑放入这样的方法中:

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();

但是仍然不完全了解您想要什么。你能举一个数据的例子,比如哪个集合应该转换为哪个集合?

最新更新