C# 我如何创建一个LINQ表达式来连接四个表并允许在最上面的表上使用where?
我有以下课程:C# 我如何创建一个LINQ表达式来连接四个表并允许在最上面的表上使用where?,c#,linq,C#,Linq,我有以下课程: public partial class Topic { public Topic() { this.SubTopics = new List<SubTopic>(); } public int TopicId { get; set; } public string Name { get; set; } public int SubjectId { get; set; } public virtu
public partial class Topic
{
public Topic()
{
this.SubTopics = new List<SubTopic>();
}
public int TopicId { get; set; }
public string Name { get; set; }
public int SubjectId { get; set; }
public virtual Subject Subject { get; set; }
public virtual ICollection<SubTopic> SubTopics { get; set; }
}
public partial class SubTopic
{
public SubTopic()
{
this.Problems = new List<Problem>();
}
public int SubTopicId { get; set; }
public int TopicId { get; set; }
public string Name { get; set; }
public virtual ICollection<Problem> Problems { get; set; }
public virtual Topic Topic { get; set; }
}
public class Problem
{
public Problem()
{
this.Questions = new List<Question>();
}
public int ProblemId { get; set; }
public int SubTopicId { get; set; }
public string Title { get; set; }
public virtual SubTopic SubTopic { get; set; }
public virtual ICollection<Question> Questions { get; set; }
}
public class Question
{
public int QuestionId { get; set; }
public int ProblemId { get; set; }
public string Text { get; set; }
public virtual Problem Problem { get; set; }
}
为此,有人能告诉我如何使LINQ表达式连接上述所有表,以便输入SubjectId=0 您拥有所需的所有导航属性,因此只需执行以下操作:
var questions = _questionsRepository.GetAll()
.Where(m => m.Problem.SubTopic.Topic.SubjectId == 0)
.Select(m => m.QuestionId);
您可能需要一些空检查
.Where(m => m.Problem != null &&
m.Problem.SubTopic ! null &&
m.Problem.SubTopic.Topic != null &&
m.Problem.SubTopic.Topic.SubjectId == 0)
.Select(m => m.QuestionId);
您拥有所需的所有导航属性,因此只需执行以下操作:
var questions = _questionsRepository.GetAll()
.Where(m => m.Problem.SubTopic.Topic.SubjectId == 0)
.Select(m => m.QuestionId);
您可能需要一些空检查
.Where(m => m.Problem != null &&
m.Problem.SubTopic ! null &&
m.Problem.SubTopic.Topic != null &&
m.Problem.SubTopic.Topic.SubjectId == 0)
.Select(m => m.QuestionId);