Frage

Ich weiß nicht, ob es eine einfache Möglichkeit, es zu tun, aber im Grunde, was ich tun möchte, ist:

var highlights = db.Banners.Where(h => h.Category == "highlight").ToList().GetRange(0,4);

Ich habe dieses Modell Banner, wo ich einige Highlights, aber ich mag nur 4 zufällige Highlights jedes Mal in einer anderen Reihenfolge abgerufen werden.

So ist der Code Ich verwende abrufen nur einen Bereich von [0..4] Highlights und wenn Sie weniger als 4 ist, es gibt einen Fehler, und sie sind nicht randomisiert.

Alle Ideen, wie kann ich es einfach tun?

Das Ergebnis Ich mag würde, ist eine haben, List<Banner> es passieren zu der Ansicht, aber jedes Mal mit anderer Reihenfolge wie:

[1,3,4,2] || [2,1,4,3] || [12,32,15,3]

Ich denke, das ist es:)

Vielen Dank

War es hilfreich?

Lösung

Hier ist ein Beispiel für Zufall LINQ Sampling auf Codeproject

Andere Tipps

Um Banner Randomisierung und die ersten vier oder weniger erhalten Sie könnten dies tun:

Random r = new Random(DateTime.Now.Ticks);

var highlights = db.Banners.Where(h => h.Category == "highlight").
    OrderBy(h => r.Next()).Take(4)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top