日期:2014-05-17  浏览次数:20578 次

ASP.NET MVC3 Linq to SQL的Group by问题请教!
本帖最后由 lightmusic 于 2014-01-14 09:04:58 编辑
select StuID as 学号, (select TrueName from DB_Users where DB_Score.StuID=DB_Users.StuID) as 姓名 ,
sum(case ClassID WHEN '25' THEN Score END )AS 语文, 
sum(case ClassID WHEN '26' THEN Score END )AS 数学,
sum(Score) as 总分,AVG(Score) as 平均分,
Rank() over ( order by sum(Score) ) as 名次  
from DB_Score Where TypeID=1 and ImportTime='2014-1-14' 
group by DB_Score.StuID order by 总分



上面这句是SQL的写法,其中查询条件TypeID=变量,ImportTime=变量
这句在SQL查询中一点问题没有
现在的问题是如何把这个语句转换成LINQ的,或者其他方法能拿到想要的数据就行
要可以自己填写条件来查询,如何获得这两个变量
普通的我都会写,但是group by的实在不会了,求大神帮忙!

------解决方案--------------------

var q = from a in DB_Score?
group a by a.StuID into k
select new {
stuNum = k.Key,
lang = k.Where(b=>b.ClassID==1).Sum(b=>b.Score),
math = k.Where(b=>b.ClassID==2).Sum(b=>b.Score),
};
var p = q.Select(a=>new {
stuNum = a.stuNum,
lang = a.lang,
math = a.math,
total = (a.lang+a.math)
});
        foreach(var item in p.OrderByDescending(a=>a.total)){}