c# - 时间:2019-01-10 标签:c#mapperobject,具有列表中的一个属性
问题描述
我有一个关于引擎名称、引擎马力和列表 carid 的请求。如何将 EngineTMP 映射到 EngineModelDto?
Table engine:
id, name, hp, carid
public class EngineModelDto
{
public string Name { get; set; }
public int Hp { get; set; }
public Guid CarId { get; set;}
}
public class EngineTMP
{
public string Name { get; set; }
public int Hp { get; set; }
public List<Guid> CarIds { get; set; }
}
我想做类似这样的伪代码:(但使用自动映射器)
List<EngineModelDto> myListDto = new List<EngineModelDto>();
for(int i = 0; i < CarIds.lenght - 1; i++)
{
var e = new EngineModelDto {
Name = EngineTMP.name,
Hp = EngineTMP.hp,
CarId = EngineTMP.CarIds[i];
}
list.Add(e);
}
解决方案
对于这样一个简单的映射,您不妨手动执行此操作:
var dtos = engineTmp.CarIds.Select(id => new EngineModelDto
{
Name = engineTmp.Name,
Hp = engineTmp.Hp,
CarId = id,
});
但是,如果你坚持使用 AutoMapper,你可以这样做:
CreateMap<EngineTMP, IEnumerable<EngineModelDto>>()
.ConvertUsing(src => src.CarIds?.Select(id => new EngineModelDto
{
Name = src.Name,
Hp = src.Hp,
CarId = id,
}));
然后:
var dtos = mapper.Map<IEnumerable<EngineModelDto>>(engineTmp);
推荐阅读
- macos - 防止按钮在暗模式下呈现背景颜色?
- gradle - 如何以编程方式将项目添加到 Gradle 设置
- zapier - Zapier正则表达式:单词后匹配
- layout - 如何在 Apache Royale 的布局中将孩子居中?
- c++ - 我正在尝试在 C++ 中创建一个日志记录框架,但信息没有传递给记录器的子组件,我做错了什么?
- python - Python:创建数组列表
- android - 模拟器:警告:QXcbIntegration
- sublimetext3 - 如何使用 HomeBrew 升级木桶
- javascript - Node.js:带/不带 Promise 的异步等待
- android - kotlin 中的一个 RecyclerView 中有两个 ArrarList