Использование ASP.Net MVC3 с C#Выберите случайную единую запись в контроллере
Как я могу выбрать одну случайную запись из моей базы данных?
Это код, у меня сейчас
CJAd cjad = db.CJAds.Single(c => c.category_id == 1 && c.ad_active == true);
Использование ASP.Net MVC3 с C#Выберите случайную единую запись в контроллере
Как я могу выбрать одну случайную запись из моей базы данных?
Это код, у меня сейчас
CJAd cjad = db.CJAds.Single(c => c.category_id == 1 && c.ad_active == true);
var selection = db.CJAds.Where(c => c.category_id == 1 && c.ad_active);
CJAd cjad = selection
.OrderBy(c => c.id)
.Skip(new Random().Next(selection.Count()))
.First();
Это выглядит хорошо и не вызывает ошибок в Visual Studio, но вызывает эту ошибку. System.NotSupportedException: метод «Skip» поддерживается только для отсортированного ввода в LINQ to Entities. Метод «OrderBy» должен быть вызван перед методом «Пропустить». –
Вы не указали, какую структуру вы используете. Но в этом случае добавьте некоторую сортировку (OrderBy()) перед пропуском. Я могу помочь вам здесь, так как я не знаю вашего стола. – Tim
Im на мобильном устройстве, так не может проверить. Это должно сработать.
CJAd cjad = db.CJADs.Where(c => c.category_id == 1 && c.ad_active).OrderBy(c => Guid.NewGuid()).FirstOrDefault();
Я думаю, что это невозможно оценить в базе данных и приведет к полной загрузке таблицы и упорядочению памяти. – Tim
А вам нравится код, который вы имеете сейчас, потому что? .. –
Вам не нужно делать '&& c.ad_active == true', просто' && c.ad_active' достаточно. –