X zufällige Elemente aus der Tabelle in der Datenbank mit Linq oder lambda in C#
Ich habe eine Datenbank mit x Menge Benutzer und ich will zufällig bekommen alle Benutzer und dann schreiben, wie 50, die Nutzer auf meine Website.
Im Moment bin ich nur mit .take(50)
und ruft die letzten 50 Benutzer. Ich möchte es zu mischen 50 zufällig aus der gesamten Tabelle, Irgendwelche Ideen?
Dies ist, was mein code jetzt so aussieht:
userList = userList.OrderBy(user => -user.ID).Take(userCount).ToList();
HINWEIS: userlist
ist meine Liste mit allen Benutzern. und wie Sie sehen können ich bin im moment mit lambda-Ausdruck mit einer variable namens " userCount wo ich sage, wie viele Benutzer-Liste aus!
- Ich möchte eine Art random verwenden Sie in diesem natürlich. Aber ich weiß nicht wie 🙁
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese
order by
Klausel davon ausgehen, dass die zurückgegebene Anzahl ist durch diernd
Objekt ist eine user-id? Was ich meine ist, ist es möglich, eine id die nicht vorhanden ist?OrderBy(user => user.Id)
diese Aufträge, die der Benutzer anhand Ihrer Ids.OrderBy(user => rnd.Next())
diese "Mitarbeiter" eine zufällige Zahl für jeden user und dann Aufträge von diesen zahlen.Next()
Methode. Die inneren Abläufe sind jetzt klar.Wenn es okay ist, laden Sie alle Benutzer und dann nehmen 50 von Ihnen, Sie können mit einer while-Schleife wie diese:
Gibt es 2 Möglichkeiten, dies zu tun, je nachdem, wie viele Benutzer in Ihrem system
1.
2.
MikeSW mich zu schlagen, dass man
Unterschied zwischen den Optionen ist, dass 1) beinhaltet 2 Abfragen Abfragen an die Datenbank und 2) gehört das laden aller Benutzer aus der Datenbank einfach zu laden 50 von Ihnen. Es ist bis zu Ihnen, das ist ein besserer Weg, es zu tun.
Vorausgesetzt, Sie haben eine Id primary key-Spalte in der Entität würde ich empfehlen, verwenden Sie die folgende Abfrage, oder Sie werden bringen eine Menge von Daten ohne Grund.
Erweiterung, Ohne Random
Und jetzt können Sie