日期:2014-05-20  浏览次数:20717 次

Linq to sql 复杂查询
本帖最后由 q107770540 于 2012-03-09 10:05:14 编辑
我有如下几张表:(Code First)
    //中间表
    public class Middle
    {
        [Key]
        public int MiddleID { set; get; }
        [ForeignKey("Student")]
        public int StudentID { set; get; }
        [ForeignKey("Subject")]
        public int SubjectID { set; get; }

        public virtual Student Student { set; get; }
        public virtual Subject Subject { set; get; }
    }
    

    //学生表
    public class Student
    {
        [Key]
        public int StudentID { set; get; }

        [Column("StudentName")]
        public string StudentName { set; get; }

        [Column("BeiZhu")]
        public string BeiZhu { set; get; }

        public virtual ICollection<Middle> Middle { set; get; }
    }


    //科目表
    public class Subject
    {
        [Key]
        public int SubjectID { set; get; }

        [Column("SubjectName")]
        public string SubjectName { set; get; }

        public virtual ICollection<Middle> Middle { set; get; }
    }



    现在我需要查询哪个科目下的学生人数最多   查询出最多的那门课程名称 及人数 研究了一晚上  想不出来了...求高手解答,Lambda表达式也行  只要能做出来 (不要说写SQL语句啊...)
------解决方案--------------------
本帖最后由 q107770540 于 2012-03-09 10:01:24 编辑
引用:
现在我需要查询哪个科目下的学生人数最多 查询出最多的那门课程名称 及人数 研究了一晚上 想不出来了...求高手解答,Lambda表达式也行 只要能做出来 (不要说写SQL语句啊...)


var query=(from m in db.Middle 
          group m by m.SubjectID into g
          let cunt=g.Count(n=>n.StuentID)
          orderby cunt descending
          select new 
           {
               SubjectName =db.Subject.SingleOrDefault(sj=>sj.SubjectID==g.Key).SubjectName,