gpt4 book ai didi

c# - 如何使用 LINQ 在 DTO 中填充集合?

转载 作者:行者123 更新时间:2023-11-30 16:11:18 25 4
gpt4 key购买 nike

我创建了以下 DTO:

    public class TestAndQuestionDTO
{
public string Name { get; set; }
public int QuestionsCount { get; set; }
public ICollection<TestAndQuestionDTO.Questions> TestQuestions { get; set; }

public class Questions
{
public Guid QuestionUId { get; set; }
}
}

我正在尝试使用 LINQ 填充它,但我对如何填充内部 Questions 类感到困惑。

这是我目前所拥有的:

    var result = await db.Tests
.Include(t => t.TestQuestions)
.Where(t => t.TestId == id)
.Select(t => new TestAndQuestionDTO
{
Name = t.Title,
TestQuestions = new TestAndQuestionDTO.Questions
{
QuestionUId = t.TestQuestions. ????
}

})
.ToListAsync();

有人可以告诉我如何使用从我的集合中带回的数据填充 TestQuestions 集合字段:.Include(t => t.TestQuestions) 我必须例如有TestAndQuestionDTO 中的构造函数来创建 TestQuestions 的集合?

这是我的测试类以供引用:

public partial class Test
{
public Test()
{
this.TestQuestions = new HashSet<TestQuestion>();
}

public int TestId { get; set; }
public string Title { get; set; }
public virtual ICollection<TestQuestion> TestQuestions { get; set; }

}

最佳答案

您可以像这样使用另一个 Select 转换为您的问题 DTO:

var result = await db.Tests
.Include(t => t.TestQuestions)
.Where(t => t.TestId == id)
.Select(t => new TestAndQuestionDTO
{
Name = t.Title,
TestQuestions = t.TestQuestions.Select(tq => new TestAndQuestionDTO.Questions
{
QuestionUId = tq.QuestionUId,
//fill in your Questions DTO here
})

})
.ToListAsync();

如果需要TestAndQuestionDTO.Questions成为ICollection<>键入,将其更改为:

var result = await db.Tests
.Include(t => t.TestQuestions)
.Where(t => t.TestId == id)
.Select(t => new TestAndQuestionDTO
{
Name = t.Title,
TestQuestions = new Collection<TestAndQuestionDTO.Questions>(
t.TestQuestions.Select(tq => new TestAndQuestionDTO.Questions
{
QuestionUId = tq.QuestionUId,
//fill in your Questions DTO here
}).ToList())
})
.ToListAsync();

关于c# - 如何使用 LINQ 在 DTO 中填充集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24526642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com