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

È stato utile?

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top