用automapper从两个对象映射数据

本文关键字:两个 对象 映射 数据 automapper | 更新日期: 2023-09-27 18:19:24

嗨,我正在使用autommaper从对象进行数据传输,我有一个情况,我必须从两个对象映射到一个。

这是我从存储库获得的数据:

IEnumerable<GetStudentClassmates_Result> students = UnitOfWork.Dashboard.GetStudentClassMates(studentId);
IEnumerable<GetStudentTeachers_Result> teachers = UnitOfWork.Dashboard.GetStudentTeachers(studentId);

这是我需要映射到的对象:

public class ParticipantsDTO
{
    public IEnumerable<GetStudentClassmates_Result> Students { get; set; }
    public IEnumerable<GetStudentClassmates_Result> Teachers { get; set; }
}

是否有办法实现这与自动地图?

用automapper从两个对象映射数据

可能你可以包装你的IEnumerable<GetStudentClassmates_Result>IEnumerable<GetStudentTeachers_Result>Tuple和定义你的地图基于Tuple。映射代码如下所示:

Mapper.CreateMap<Tuple<IEnumerable<GetStudentClassmates_Result>, IEnumerable<GetStudentTeachers_Result>>, ParticipantsDTO>();

希望它对你有用。

你的例子看起来它们包含相同的类,所以看起来它们不需要映射。

我将期待一个GetStudentClassmates_ResultDto对象。

请纠正我,我将更新我的答案。

本文向您展示了如何映射集合:

https://github.com/AutoMapper/AutoMapper/wiki/Lists-and-arrays

首先你需要创建一个地图,例如:

Mapper.CreateMap<GetStudentClassmates_Result, GetStudentClassmates_ResultDto>();

然后映射它们,即:

IEnumerable<GetStudentClassmates_ResultDto> ienumerableDest = Mapper.Map<IEnumerable<GetStudentClassmates_Result>, IEnumerable<GetStudentClassmates_ResultDto>>(students);