Ich ziehe derzeit Daten aus einer Datenbank und rangiere sie, wenn ich sie durchlaufe. Beispiele für solche Nummern sind 45, 45, 67, 99, 34, 65, 88, 22, 90, 90, 90, 23, 55, 46
. Das sind insgesamt 14 Nummern, die ich durchlaufen und ordnen möchte.Rangnummern in einer Schleife vb.net
Dim i As Integer() = {45, 45, 67, 99, 34, 65, 88, 22, 90, 90, 90, 23, 55, 46}
Dim lastScore As Integer
Dim position As Integer = 0
For Each i1 In i
If Val(lastScore) <> Val(i1) Then
position += 1
Console.WriteLine(position & vbCrLf)
ElseIf Val(lastScore) = Val(i1) Then
Console.WriteLine(position & vbCrLf)
position += 1
End If
lastScore = Val(i1)
Next
Die aktuelle Ausgabe des Codes oben ist:
1, 1, 3, 4, 5, 6, 7, 8, 9, 9, 10, 12, 13, 14
was falsch ist. Die erwartete Ausgabe soll sein:
1, 1, 3, 4, 5, 6, 7, 8, 9, 9, 9, 12, 13, 14
Wie kann ich das erreichen?
Wenn Sie eine Datenbank verwenden, die Ranking-Funktionen unterstützen Sie es –
es tun sollen Wahrscheinlich sollte man nicht Erhöhen Sie die 'Position' im Fall 'Val (lastScore) = Val (i1) '. Außerdem muss Ihr else-Zweig kein 'ElseIf' sein, ein regulärer' Else' würde den Trick machen (keine Notwendigkeit, das genaue Gegenteil Ihrer ursprünglichen 'if'-Anweisung neu zu bewerten) – Icepickle
@TimSchmelter Ich möchte es sein Ich bin in der Lage, es selbst mit Hilfe einer Schleife zu sortieren – BlackPearl