【问题标题】:Map an object to an object with a sub list将对象映射到具有子列表的对象
【发布时间】:2017-03-06 06:39:44
【问题描述】:

我有一堂课:

public class LearnerEvent
{
    public string SubjectField { get; set; }

    public string GradeField { get; set; }

    public DateTime AchievementAwardDateField { get; set; }

    public string QualificationTypeField { get; set; }
}

我想将此映射到 DTO:

public class LearnerEventDto
{
    public List<LearnerEventInfoDto> LearnerEventInfo { get; set; }

    public string QualificationTypeField { get; set; }
}

其中有一个子 dto:

public class LearnerEventInfoDto
{
    public string SubjectField { get; set; }

    public string GradeField { get; set; }

    public DateTime AchievementAwardDateField { get; set; }
}

目的是让我可以分组显示对象,即。按奖励类型分组。

我知道我可能必须编写一个自定义映射器(使用 automapper),但我只是不确定如何去做。

【问题讨论】:

    标签: c# asp.net asp.net-mvc mapping automapper


    【解决方案1】:

    您想要的映射意味着该列表中的每个 InfoDTO 对象都必须具有相同的 QualificationType,这意味着您已经将 LearnerEvents 过滤为特定类型。应该不需要将 QualificationType 写入“DTO 列表”。

    我猜您正在使用 DTO,因为您不想分发 LearnerEvent 类,或者因为您想过滤示例中未显示的某些信息,所以我会做的是使用您要传输的 LearnerEvent 中的字段创建 LearnerEventDTO,将它们放在 List 中并将它们发送到您想要的任何地方。

    另一方可以通过在任何元素上查找来确定 QualificationType,并且这些项目无论如何都应该具有相同的 QualificationType。

    【讨论】:

    • 我最初按照您建议的方式进行操作,但我的经理说他希望在返回前端之前完成所有排序。
    • 排序是指按资格分组
    • 但是它们已经分组了。如果您将 QualificationType 写入 ListDTO,则该 ListDTO 中的任何 ListItemDTO 都必须具有确切的 QualficiationType,否则您的合同无效。因此,您已经对事件进行了分组。
    猜你喜欢
    • 1970-01-01
    • 2018-12-02
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多