Automapper:如何将对象列表和枚举组成的元组映射到列表



例如,我有第一个对象是源

class PersonEntity
{
public string FirstName {get; set;}
public string LastName {get; set;}
}

,目的地为

class PersonDto
{
public string Name {get; set;}
}

和enum

enum NameMode
{
first,
full
}

我的映射配置文件创建的地图看起来像这样

CreateMap<(PersonEntity, NameMode), PersonDto>()
.ForMemeber(dest => desat.Name, opt => opt.MapFrom<NameCustomeResolver>()));

根据传入的enum值,我将从源组合姓和名,或者只是使用名字,现在的问题是,我想用这个将PersonEntity列表映射到PersonDto列表

i tried this

List<PersonEntity> source = new List<PersonEntity>();
List<PersonDto> destination = mapper.Map<List<PersonDto>>((source, NameMode.full));

我得到了异常

缺少类型映射配置或不支持映射。

经过一番研究,我尝试了以下

var result = source.AsQueryable().Select(p => (p, NameMode.full)).ProjectTo<PersonDto>(mapper.ConfigurationProvider);

但是这个有语法错误

表达式树不能包含元组文字

我只是想实现将PersonEntity列表映射到PersonDto列表

你可以试试:

var destination = mapper.Map<List<PersonDto>>(source.Select(x => (x, NameMode.full)));

之所以有效,是因为source.Select(x => (x, NameMode.full))将创建元组(PersonEntity, NameMode)的可枚举对象,因为您已经在(PersonEntity, NameMode)PersonDto之间配置了映射。Automapper将自动处理IEnumerable<(PersonEntity, NameMode)>IEnumerable<PersonDto>之间的映射。

相关内容

  • 没有找到相关文章

最新更新