Ich habe eine SQL-Abfrage, die Teilnehmer nach mehreren Feldern sortiert. Ich muss dies in LINQ konvertieren, was ich verstehe, hat keine Rangfunktion. Kann jemand helfen, dies zu konvertieren?SQL-Rang in LINQ zu Entitäten
Wenn es hilft, hier ist das, was es tut. Diese Abfrage ruft Teilnehmer aus einer Tabelle ab und ordnet sie basierend auf den aufgelisteten Feldern RANK() OVER (ORDER BY W desc, L asc, RW asc, RL desc, HP desc, TB desc) AS RANK
zu. Weiter packe ich nur irgendwelche Verbindungen für diese beiden Rankings sind, wenn jene auf Platz 1 oder 2 Where q1.RANK in ('1','2')
und sehen 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
Hier werden die Daten der Auswahl alle Felder
Hier ist ein Beispiel dafür, wie die gefilterten Daten in der Unterabfrage aussehen. Von diesem Satz, schaue ich zu sehen, wenn es mehr als 1 Datensatz ist auf Rang 1 oder Rang 2.
RESPONSE
Danke für die Antworten so weit, auf Platz lasse ich Sie wissen, wann ich diese ausprobieren kann. Hier ist eine andere Frage. Wäre es besser, stattdessen eine gespeicherte Prozedur von einem Controller aufzurufen? Auf diese Weise kann ich die SQL-Abfrage so lassen, wie sie ist. Ich habe eine Reihe von großen Abfragen, die ich ausführen muss, die Rang beinhalten. Ich frage mich, ob es einfacher wäre, alles in LINQ neu zu schreiben.
Ich versuchte Linqer mit (das wird SQL zu LINQ konvertieren für dich) und das sagt mir RANK() Konvertierung wird nicht unterstützt. Ich bin ziemlich neu bei Linq und das ist komplexer, als ich jetzt verarbeiten kann. – madvora
@Hogan, der Partitionsteil ist optional – Alex
ok ich sehe - es verwendet die Elemente in der Reihenfolge, um zu finden, Krawatten. – Hogan