c# - C# - 为2个表编写LINQ查询

115 1

我有两张表student coursetaken ,我需要编写一个LINQ代码来显示所有的CourseTaken,活跃的学生状态设置为true 。

我写了一些LINQ语句,这些语句会显示特定Id的所有CourseTaken ,如何进一步过滤它,显示Active状态的学生CourseTaken? (CourseTaken中的S_ID包含学生Id 。)


List<CourseTaken> courseTakenList =


 await dbcont


 .CourseTaken


 .Where(c => c.CId == courseId)


 .ToListAsync();



public class Student


{


 public int Id;


 public string Name;


 public string School;


 public bool Active;


}



public class CourseTaken


{



 public int CId;


 public string CourseName;


 public int S_Id;


}



注意:我需要使用LINQ和Lambda表达式。

时间: 原作者:

107 3

int[] StudentsId =( from s in dbcont.Students


 where s.Active ==true


 select s.Id).ToArray<int>();



List<CourseTaken> courseTakenList = dbcont.CourseTaken.


 Where(c=> StudentsId.Contains(c.CId) )


 .ToList();



原作者:
60 5

我觉得你需要这个查询:


 from ct in dbcont.CourseTaken


 where ct.CId == courseId


 join s in dbcont.Student.Where(s => s.Active) on ct.S_Id equals s.Id into gsc


 where gsc.Any()


 select ct



这只返回一次CourseTaken,不管有多少活动学生正在进行课程,只要他们至少一个。

原作者:
70 0

var result =


 (from C in db.CourseTakens


 join S in db.Students.Where(s => s.Active == true) on C.S_Id equals S.Id


 select C


 ).ToList();



原作者:
...