读书人

Linq to sql 复杂查询,该如何处理

发布时间: 2012-12-29 10:28:09 作者: rapoo

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,


Count=cunt
}).FirstOrDefault();

读书人网 >.NET

热点推荐