ASP.NET MVC - Come ottenere record casuali dal modello?
-
08-07-2019 - |
Domanda
Non so se esiste un modo semplice per farlo, ma sostanzialmente quello che vorrei fare è:
var highlights = db.Banners.Where(h => h.Category == "highlight").ToList().GetRange(0,4);
Ho questo modello Banner in cui ho alcuni momenti salienti, ma vorrei recuperare solo 4 punti salienti casuali ogni volta in ordine diverso.
Quindi il codice che sto usando recupera solo un intervallo da [0..4] punti salienti e se ne hai meno di 4, restituisce un errore e non sono casuali.
Qualche idea su come potrei farlo facilmente?
Il risultato che vorrei ottenere è un List<
Banner>
per passarlo alla vista ma ogni volta con ordina come:
[1,3,4,2] || [2,1,4,3] || [12,32,15,3]
Penso che sia tutto :)
Grazie mille
Soluzione
Qui è un esempio di campionamento LINQ casuale su codeproject
Altri suggerimenti
Per randomizzare i banner e ottenere i primi quattro o meno, puoi farlo:
Random r = new Random(DateTime.Now.Ticks);
var highlights = db.Banners.Where(h => h.Category == "highlight").
OrderBy(h => r.Next()).Take(4)