LINQPad的学生表中的查询查询

检索全部课程都及格的学生的学号和姓名
检索选修人数最多的课程的课程号和课程名

linqpad没用过,linq代码如下,注意自己新建linq to sql实体类

img

using System;
using System.Linq;
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataClasses1DataContext ctx = new DataClasses1DataContext();
            var rs = ctx.学生表.Where(s => ctx.成绩表.Where(i => !ctx.成绩表.Where(i1 => i1.成绩 < 60).Select(x => x.学生id).Distinct().Contains(i.学生id)).Select(i => i.学生id).Distinct().Contains(s.id));
            foreach (var r in rs) Console.WriteLine(r.姓名+","+r.学号);

            var rs1 = ctx.课程表.Where(i => i.id == ctx.成绩表.GroupBy(x => x.课程id).OrderByDescending(x => x.Count()).Select(x => x.Key).First());

            foreach (var r in rs1) Console.WriteLine(r.id+","+r.课程名称);

            Console.ReadKey();
        }
    }
}

有帮助麻烦点下【采纳该答案】

1、对学号进行分组,having中判断min(score)>=60
2、子查询对学号进行分组,查询count(1) cou,学号。
然后select * from (子查询结果)order by cou desc limit 1