使用automapper从两个对象映射两个数据

时间:2013-06-20 11:49:23

标签: c# automapper

您好我使用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; }
}

有没有办法用autommaper实现这个目标?

2 个答案:

答案 0 :(得分:2)

可能您可以将IEnumerable<GetStudentClassmates_Result>IEnumerable<GetStudentTeachers_Result>包裹在Tuple中,并根据Tuple定义您的地图。映射代码将如下所示。

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

希望它适合你。

答案 1 :(得分:1)

您的示例看起来像包含相同的类,因此看起来它们不需要映射。

我期待一个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);