用linq语句检索至少选修了程军所授全部课程的学生的学号和姓名

用linqpad检索至少选修了程军老师所授全部课程的学生的学号和姓名,
数据库:SC1
表:Cs,S,SCs,Ts

题主要的linq代码如下,表名称自己更改下

img

using System;
using System.Linq;
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataClasses1DataContext ctx = new DataClasses1DataContext();

            //选出程军教的课程
            var rst = ctx.课程表.Where(i => i.教师id == ctx.教师表.Where(x => x.教师姓名 == "程军").Select(x => x.id).FirstOrDefault());

            var rs = ctx.学生表.Where(
                //选出成绩表中和程军教的课程数量一样的学生id集合
                s => ctx.成绩表.Where(c => rst.Select(i => i.id).Contains(c.课程id)).GroupBy(i => i.学生id).Select(i => new { 学生id = i.Key, 课程数 = i.Count() })
                .Where(i => i.课程数 == rst.Count()).Select(i=>i.学生id).Contains(s.id)
                );


            foreach (var r in rs) Console.WriteLine(r.学号+","+r.姓名);


            Console.ReadKey();
        }
    }
}

有帮助或启发麻烦点下【采纳该答案】,谢谢~~有其他问题可以继续交流~