将SQL查询转换为LINQ ORDER BY、GROUP BY、COUNT

将SQL查询转换为LINQ ORDER BY、GROUP BY、COUNT,sql,asp.net-mvc,linq,lambda,Sql,Asp.net Mvc,Linq,Lambda,我很难将此查询转换为LINQ。你们能帮帮我吗 select ChoiceID, count(ChoiceID) as aValue from QuestionNumber inner join TestAnswer on QuestionNumber.QNID = TestAnswer.QNID where QuestionNumber.QuestionID = 30 group by ChoiceID order by aValue desc 谢谢 我认为应

我很难将此查询转换为LINQ。你们能帮帮我吗

select ChoiceID, count(ChoiceID) as aValue 
from QuestionNumber inner join 
     TestAnswer 
     on QuestionNumber.QNID = TestAnswer.QNID 
where QuestionNumber.QuestionID = 30 
group by ChoiceID 
order by aValue desc 

谢谢

我认为应该是这样的:var query=from qn in QuestionNumber在qn.QNID上加入ta in TestAnswer等于ta.QNID,其中qn.QuestionID==30将qn按qn.ChoiceId分组到group1中选择new{ChoiceId=qn.ChoiceId,aValue=group1.Count}.orderbydegeneratingx=>x.aValue;。我认为orderby qAsnwer.QCount descending必须在选择之前添加,并且似乎更倾向于使用聚合OrderByDescending,因为此时还没有定义QCount。请不要只发布SQL并要求转换。至少显示一个类模型,以便导航属性和关联的多样性可见。另外,告诉我们您针对实体的LINQ类型,并展示您自己的第一次努力,以便我们了解您具体需要帮助的地方。最好的LINQ查询很少是SQL查询的1:1复制。
var query = from qNo in QuestionNumber
            join tAnswer in TestAnswer on
            qNo.QNID equals tAnswer.QNID into qAnswer
            group qAnswer by qNo.ChoiceId
            where qNo.QuestionId == 30
            select new { ChoiceId = qNo.ChoiceId, 
                         QCount = qAnswer.Count() }
            orderby qAsnwer.QCount descending