C# 如何使用LINQ从3个相关实体获取数据?
我有学生班、计划班和课时班。我想根据学生的学号、课程名、程序名和密码选择一个学生。 课程和课时班与学生班有一对多的关系 这是课时课C# 如何使用LINQ从3个相关实体获取数据?,c#,sql,entity-framework,linq,C#,Sql,Entity Framework,Linq,我有学生班、计划班和课时班。我想根据学生的学号、课程名、程序名和密码选择一个学生。 课程和课时班与学生班有一对多的关系 这是课时课 public class Session { [Key] public int SessionID { get; set; } [Required] [MaxLength(30)] public string SessionName { get; set; }
public class Session
{
[Key]
public int SessionID { get; set; }
[Required]
[MaxLength(30)]
public string SessionName { get; set; }
//Relationship ------- Navigational Properties -------------------------------
public virtual List<Student> Students { get; set; }
public virtual List<Teacher> Teachers { get; set; }
public virtual List<Subject> Subjects { get; set; }
public virtual List<Program> Programs { get; set; }
}
这是程序课
public class Program
{
[Key]
public int ProgramID { get; set; }
[Required]
[MaxLength(30)]
public string ProgramName { get; set; }
//Relationship ------- Navigational Properties -------------------------------
public virtual List<Student> Students { get; set; }
public virtual List<Teacher> Teachers { get; set; }
public virtual List<Subject> Subjects { get; set; }
}
这是学生班
public class Student
{
[Key]
[Column(Order = 0)]
public int StudentID { get; set; }
[Required]
[MaxLength(30)]
public string FirstName { get; set; }
[Required]
[MaxLength(30)]
public string LastName { get; set; }
[Required]
[MaxLength(30)]
public string UserName { get; set; }
[Required]
[MaxLength(35)]
public string Email { get; set; }
[Required]
[MaxLength(30)]
public string Password { get; set; }
[Required]
[MaxLength(30)]
public string FatherName { get; set; }
[Required]
public DateTime DOB { get; set; }
[Required]
[MaxLength(15)]
public string CNIC { get; set; }
[Required]
public int RollNo { get; set; }
public bool Active { get; set; }
public bool Graduated { get; set; }
public bool Expelled { get; set; }
//Relationship ------- Navigational Properties -------------------------------
public virtual List<Teacher> Teachers { get; set; }
public virtual List<Subject> Subjects { get; set; }
public virtual List<StudentMessage> Messages { get; set; }
public Session Session { get; set; }
public Program Program { get; set; }
public Grade Grade { get; set; }
public Attendance Attendance { get; set; }
public StudentContact StudentContact { get; set; }
public StudentMessage StudentMessage { get; set; }
}
现在,我如何使用LINQ查询语法和LINQ方法语法选择给定了特定rollno、sessionName、programName和密码的学生的用户名
在数据库中,学生表包含SessionID和ProgramID
我知道Join用于从多个表中提取数据,但我不知道如何在LINQ语法中使用它。您可以使用以下代码:
var list = dbContext.Students
.Where(e=>e.RollNo == 10)
.Where(e=>e.Password == "password")
.Where(e=>e.Session.SessionName == "SessionName")
.Where(e=>e.Session.ProgramName == "ProgramName")
.Select(e=> e.UserName)
.ToList();
你不明白我的问题:一个单一的Where,再加上多个&&不是比成吨的单一Where更有效吗?没关系,他们的一对就是一个。你有什么计划吗,对于设计的改变,其他方面的回答可以帮到你。