c# - Automapper,将长列表映射到嵌套的对象
问题描述
我有四节课
public class Status
{
public long Key { get; set; }
public string DisplayString { get; set; }
}
public class Attachment
{
public long Key { get; set; }
public string FileName { get; set; }
public long FileSize { get; set; }
public string ExternalKey_SO { get; set; }
}
public class TaskClick
{
public long Key { get; set; }
public string CallId { get; set; }
public Status Status { get; set; }
public List<Attachment> Attachments { get; set; }
}
public class TaskClickDto
{
public long Key { get; set; }
public string CallId { get; set; }
public string Status { get; set; }
public List<long> AttachmentKeys { get; set; }
}
我不知道如何将 TaskClickDto.AttachmentKeys 列表映射到 TaskClick.Attachments
AttachmentKeys 是 Taskclick 的所有 Key 的列表
我的自动映射器配置
public class AutoMapperProfile : Profile
{
public AutoMapperProfile()
{
CreateMap<TaskClick, TaskClickDto>()
//TaskClick --> TaskClickDto works ok
.ForMember(dest => dest.CallId, opt => opt.MapFrom(src => src.CallId))
.ForMember(dest => dest.Status, opt => opt.MapFrom(src => src.Status.DisplayString))
.ForMember(dest => dest.AttachmentKeys, opt => opt.MapFrom(src => src.Attachments.Select(k => k.Key)))
.ReverseMap()
//TaskClickDto --> TaskClick works Ko
.ForPath(dest => dest.Status.DisplayString, opt => opt.MapFrom(src => src.Status))
.ForPath(dest => dest.Attachments, ????));
}
}
所以我需要知道如何创建一个新的 Attachment 列表,为每个列表映射键并忽略其余属性。
此致。乔莉妮丝
解决方案
这应该这样做:
.ForPath(dest => dest.Attachments, opt =>
opt.MapFrom(src => src.AttachmentKeys.Select(k =>
new Attachment { Key = k }).ToList()));
推荐阅读
- python - 通过 getPerspectiveTransform 从矩阵中找到透视倾斜的角度?
- php - 修改 rails authenticate_user 函数以支持 PHP 的非标准 bcrypt 表示法
- android - 安装后反应本机矢量图标导致错误
- java - Java多项式乘法
- matlab - 在matlab中使用高斯导数的3维体积梯度
- java - 如何在android studio中发送udp数据报?
- javascript - 在将函数用作子/渲染道具时获取子长度
- select - QUERY 将超链接输出到同一工作表中另一个选项卡中的单元格
- c# - 变量项只显示一行
- ios - 过渡时启动键盘动画