如何在Linq查询的最低级别添加几个额外的字段

本文关键字:几个 字段 添加 Linq 查询 | 更新日期: 2023-09-27 18:23:58

我有以下Linq语句:

        db.AdminTests
        .Include(t => t.AdminTestQuestions)
        .ToList();

这给了我一个AdminTests的列表,在每个列表中都有一个包含AdminTestQuestions的集合:

public class AdminTest
{
    public AdminTest()
    {
        this.AdminTestQuestions = new List<AdminTestQuestion>();
    }
    public int AdminTestId { get; set; }
    public virtual ICollection<AdminTestQuestion> AdminTestQuestions { get; set; }
}

AdminTestQuestions中返回的数据是包含以下信息的集合:

public partial class AdminTestQuestion
{
    public int AdminTestQuestionId { get; set; }
    public int AdminTestId { get; set; }
    public System.Guid QuestionUId { get; set; }
    public virtual AdminTest AdminTest { get; set; }
    // I would like to add subTopicId here
    // I would like to add title here
}

有没有办法将其他信息返回到这个集合中?首先,我需要添加几个虚拟参数吗?第二,我如何/可以用LINQ做到这一点?

具体来说,我想添加另外两条基于QuestionUId的数据。我想添加"标题"(来自问题表)和"SubTopicId"(来自题表)。这些可以通过某种方式加入问题表,然后加入问题表来获得:

public class Question
{
    public int QuestionId { get; set; }
    public int ProblemId { get; set; }
    public Guid QuestionUId { get; set; }
    // I think I will need to add this code here but I did not do it yet
    // public Question() {
    //    this.AdminTestQuestions = new HashSet<AdminTestQuestion>();
    // }
    // public virtual ICollection<AdmintestQuestion> AdminTestQuestions { get; set; }
}
public class Problem
{
    public Problem()
    {
        this.Questions = new HashSet<Question>();
    }
    public int ProblemId { get; set; }
    public int SubTopicId { get; set; }
    public virtual SubTopic SubTopic { get; set; }
    public virtual ICollection<Question> Questions { get; set; }
}

如何在Linq查询的最低级别添加几个额外的字段

简单,不,您不能,因为您使用的是在编译时定义的类型。linq查询在运行时运行,并绑定到编译时可用的类型。

您唯一的解决方案是创建一个新的匿名类型,但这是一个完全不同的解决方案。