0

我的 .NET 项目中有 EntityA 到 DtoA 类和 automapper 的 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 中实现它?

4

1 回答 1

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

但是仍然没有完全理解你想要什么。你能举一个数据的例子,比如应该将哪个集合转换成哪个集合?

于 2018-10-18T07:35:47.170 回答