我有一个SQL查询,按多个字段对参与者进行排名。我需要将其转换为LINQ,我知道它没有排名功能。 有人可以帮助转换吗?在LINQ to Entities中的SQL排名
如果有帮助,这是它的功能。此查询从参赛名单中抽取参赛者,并根据RANK() OVER (ORDER BY W desc, L asc, RW asc, RL desc, HP desc, TB desc) AS RANK
中列出的字段进行排名。接下来我抢只有那些排名1或2 Where q1.RANK in ('1','2')
,看看是否有针对这两个排名Having count(q1.ParticipantID) > 1
Select q1.RANK, count(q1.ParticipantID) as 'Count'
From (
Select Distinct ParticipantID, RANK() OVER (ORDER BY W desc, L asc, RW asc, RL desc, HP desc, TB desc) AS RANK
From vGroupStandings
Where CompetitionID = 8
and GroupNumber = 1
and EventID = 6
) as q1
Where q1.RANK in ('1','2')
Group By q1.RANK
Having count(q1.ParticipantID) > 1
UPDATE
这里任何关系的数据选择的所有字段
下面是子查询中过滤数据的示例。从集合中,我一眼就看是否有超过1个战绩排在1级或2级
响应
感谢您的答复,到目前为止,我会让你知道我什么时候可以试试这些。 这是另一个问题。改为从控制器调用存储过程会更好吗?这样我可以保留原来的SQL查询。 我有一些大的查询,我将不得不运行涉及到排名。我想知道是否比在LINQ中重写所有内容更容易。
我试着用Linqer (它会将SQL转换为LINQ为你),并告诉我RANK()转换不受支持。 我对Linq很新,这比我现在可以处理的更复杂。 – madvora
@Hogan,分区部分是可选的 – Alex
好吧,我看到了 - 它使用顺序中的项目来查找关系。 – Hogan