ASP.NET MVC - Comment obtenir des enregistrements aléatoires à partir d'un modèle?
-
08-07-2019 - |
Question
Je ne sais pas s'il existe un moyen facile de le faire, mais ce que j'aimerais faire, en gros, c'est:
var highlights = db.Banners.Where(h => h.Category == "highlight").ToList().GetRange(0,4);
J'ai ce modèle Bannières dans lequel j'ai quelques points forts, mais j'aimerais seulement récupérer 4 points forts aléatoires à chaque fois, dans un ordre différent.
Le code que j'utilise récupère simplement une plage de [0..4] surlignée et si vous en avez moins de 4, une erreur est renvoyée et ils ne sont pas randomisés.
Des idées sur comment puis-je le faire facilement?
Le résultat souhaité est une liste <
bannière >
pour le transmettre à la vue, mais à chaque fois avec des ordre comme:
[1,3,4,2] || [2,1,4,3] || [12,32,15,3]
Je pense que ça y est:)
Merci beaucoup
La solution
Ici est un exemple d'échantillonnage aléatoire LINQ sur codeproject
Autres conseils
Pour sélectionner au hasard des bannières et obtenir les quatre premières ou moins, vous pouvez le faire:
Random r = new Random(DateTime.Now.Ticks);
var highlights = db.Banners.Where(h => h.Category == "highlight").
OrderBy(h => r.Next()).Take(4)