2011-01-13 28 views
2

我想使一个Linq实体查询工作,但我不知道。EF Linq实体查询与groupby总和和

这是我的我的SQL查询这是工作的罚款:

SELECT SUM(ca.PointValue) as Points, ua.UserFBID, MIN(ua.[Date]) as FirstDate 
    FROM [LeaderOfNow].[dbo].[QuestionAnswer] ca 
    inner join [LeaderOfNow].[dbo].[LONUserAnswers] ua 
    on ca.Id = ua.AnswerId 
    group by ua.UserFBID 
    order by Points desc, FirstDate asc 

一个迄今为止我最好的尝试是:

  var leaders = db.LONUserAnswers 
       .GroupBy(a => a.UserFBID) 
       .Select(a => 
       new 
       { 
        FBID = a.Key, 
        CurrentPoints = a.Select(v => v.QuestionAnswer.PointValue).Sum(), 
        FirstAnswered = a.Min(v => v.Date) 
       }) 
.OrderByDescending(a => a.CurrentPoints) 
       .OrderBy(a => a.FirstAnswered) 
       .Take(10) 
       .ToList(); 

但是呈现SQL乱七八糟的,只有尊重第一阶而不是第二,我需要工作。有什么建议我做错了什么?感谢您的帮助。

+0

EF将始终生成大量的SQL。不要担心。至于订购的东西,已经得到了答复。 – tster 2011-01-28 14:44:44

回答

4

当您锁定OrderBy-Functions时,必须使用ThenBy()ThenDescendingBy()作为后者。

+0

非常感谢。那样做了。 – 2011-01-13 23:16:38