Вопрос

Я не знаю, есть ли простой способ сделать это, но в основном я хотел бы сделать следующее:

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

У меня есть эта модель Баннеры, где у меня есть несколько бликов, но я бы хотел получать только 4 случайных блика каждый раз в различном порядке.

Так что код, который я использую, просто извлекает диапазон из [0..4] выделений, и если у вас меньше 4, он возвращает ошибку, и они не рандомизированы.

Есть идеи о том, как я могу сделать это легко?

Я хотел бы получить результат Список < Баннер > , чтобы передать его в представление, но каждый раз с разными порядок как:

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

Я думаю, что это все:)

Большое спасибо

Это было полезно?

Решение

Здесь приведен пример случайной выборки LINQ для codeproject

Другие советы

Чтобы рандомизировать баннеры и получить первые четыре или меньше, вы можете сделать это:

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

var highlights = db.Banners.Where(h => h.Category == "highlight").
    OrderBy(h => r.Next()).Take(4)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top