C# EF Linq使用groupby sum和min查询实体
我正在尝试使Linq到实体查询工作,但我无法理解它 这是我的SQL查询,运行正常: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
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。别担心。至于订购的问题,已经回答了。