C# 如何在LINQ中包含来自父对象的字段?

C# 如何在LINQ中包含来自父对象的字段?,c#,linq,linq-to-entities,C#,Linq,Linq To Entities,我试图在LINQ查询中添加一个来自对象父对象的字段,但它不起作用。以下是我的课程: public Problem() { this.Questions = new List<Question>(); } public int ProblemId { get; set; } public int SubTopicId { get; set; } public string Text { get; set; } public

我试图在LINQ查询中添加一个来自对象父对象的字段,但它不起作用。以下是我的课程:

public Problem()
    {
        this.Questions = new List<Question>();
    }
    public int ProblemId { get; set; }
    public int SubTopicId { get; set; }
    public string Text { get; set; }
    public virtual SubTopic SubTopic { get; set; }
    public virtual ICollection<Question> Questions { get; set; }
}

public class Question : AuditableTable
{
    public int QuestionId { get; set; }
    public int ProblemId { get; set; }
    public virtual Problem Problem { get; set; }
    public virtual QuestionStatus QuestionStatus { get; set; }
}



 var questions = _questionsRepository
            .GetAll()
            .Include(q => q.Problem.SubTopicId)
            .Include(q => q.Answers)
            .ToList();

您必须
包括导航属性,而不是ID:

.Include(x => x.Problem.SubTopic)

如果我是你,我会考虑从数据库中取回你真正需要的东西,然后返回一个映射对象,以减轻负载。你必须相当确定你不会在某个地方遇到N+1问题……:)

您必须
包括导航属性,而不是ID:

.Include(x => x.Problem.SubTopic)
如果我是你,我会考虑从数据库中取回你真正需要的东西,然后返回一个映射对象,以减轻负载。你必须相当确定你不会在某个地方遇到N+1问题……:)