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

Était-ce utile?

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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top