C# EF Linq使用groupby sum和min查询实体

C# EF Linq使用groupby sum和min查询实体,c#,sql,linq-to-sql,entity-framework,linq-to-entities,C#,Sql,Linq To Sql,Entity Framework,Linq To Entities,我正在尝试使Linq到实体查询工作,但我无法理解它 这是我的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 gro

我正在尝试使Linq到实体查询工作,但我无法理解它

这是我的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变得一团糟,只尊重第一个顺序,而不尊重第二个顺序,这是我需要处理的。有没有关于我做错了什么的建议?谢谢您的帮助。

当您链接OrderBy函数时,您必须使用
ThenBy()
thendrendingby()

EF将始终生成大量SQL。别担心。至于订购的问题,已经回答了。