簡體   English   中英

轉換為DTO列表屬性

[英]Convert to DTO list property

我有以下DTO:

public class QuestionGroupDTO : IBaseDTO
{
    public string Description { get; set; }
    public string Header { get; set; }
    public Guid Id { get; set; }
    public int Order { get; set; }
    public IEnumerable<Services.Forms.Models.RelationForm_QuestionGroupDTO> RelationForms_QuestionGroups { get; set; }
    public IEnumerable<RelationQuestionGroup_QuestionDTO> RelationQuestionGroups_Questions { get; set; }
}

轉換時我對RelationQuestionGroups_Questions有問題。

這是我的RelationQuestionGroup_QuestionDTO樣子

public class RelationQuestionGroup_QuestionDTO
{
    public int Order { get; set; }
    [Required]
    public Guid QuestionGroupId { get; set; }
    [Required]
    public Guid QuestionId { get; set; }

    public virtual QuestionGroupDTO QuestionGroup { get; set; }
    public virtual QuestionDTO Question { get; set; }
}

這是我的轉換方式:

public static QuestionGroupDTO ToDTO(this QuestionGroup src)
{
    var dto = new QuestionGroupDTO
    {
        Id = src.Id,
        Header = src.Header,
        Description = src.Description,
        RelationQuestionGroups_Questions = src.RelationQuestionGroups_Questions.ToList()
    };
    return dto;
}

如您所見,我正在嘗試僅分配它並列出它的列表,但是我在這里遇到了轉換錯誤。 我不確定該怎么做。

我收到以下錯誤:

無法將類型泛型列表隱式轉換為System.Collections.Generic.IEnumerble

您在映射方面有了一個良好的開端,但是在RelationQuestionGroups_Questions = src.RelationQuestionGroups_Questions.ToList() ,您正在嘗試將List<Entity>分配給List<Dto> 你不能那樣做。

您還需要映射任何非基本屬性。 您可以這樣做:

public static QuestionGroupDTO ToDTO(this QuestionGroup src)
{
    var dto = new QuestionGroupDTO
    {
        // ...
        RelationQuestionGroups_Questions = src.RelationQuestionGroups_Questions
                                              .Select(ToDTO)
                                              .ToList()
    };
    return dto;
}

然后添加一個方法來將RelationQuestionGroups_Question映射到RelationQuestionGroups_QuestionDTO

public RelationQuestionGroups_QuestionDTO ToDTO(RelationQuestionGroups_Question entity)
{
    return new RelationQuestionGroups_QuestionDTO
    {
        Order = entity.Order,
        // ...
    };
}

然后,您將看一下AutoMapper來自動執行此操作。

您忘記了將RelationQuestionGroups_Questions映射到RelationQuestionGroup_QuestionDTO

public static QuestionGroupDTO ToDTO(this QuestionGroup src)
{
    var dto = new QuestionGroupDTO
    {
        Id = src.Id,
        Header = src.Header,
        Description = src.Description,
        RelationQuestionGroups_Questions = src.RelationQuestionGroups_Questions.Select(rq => new RelationQuestionGroup_QuestionDTO
            {
                Order = rq.Order,
                QuestionGroupId = rq.QuestionGroupId,
                QuestionId = rq.QuestionId
            }).ToList()
        };
    return dto;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM