Случайная функция из базы данных SQL Server в ASP .NET - PullRequest
0 голосов
/ 26 марта 2010

Я создаю веб-страницу, которая использует asp .net в качестве бэкэнда. Мне нужно получить категории из моей базы данных, которая является SQL Server. Я использую этот код прямо сейчас

For Each row00 As DataRow In f_oDatatable(7).Rows
  sCategories += row00.Item("Category").ToString & " / "
Next

If sCategories.Length > 0 Then 
   sCategories = sCategories.Substring(0, sCategories.LastIndexOf(" / "))

CType(Me.FindControl("dbcategories"), HtmlGenericControl).InnerHtml = "Categories: " & sCategories

Этот код прекрасно работает и правильно выводит мои категории. Но мне нужно, чтобы категории выводились случайным образом. (то есть: «один / два / три / четыре / пять», а затем в другой раз - «два / пять / один / три / четыре»)

Я не могу создать случайную строку в базе данных b / c с другими зависимостями, чтобы категории всегда были одинаковыми.

Любая помощь будет принята с благодарностью. Спасибо

Ответы [ 2 ]

1 голос
/ 26 марта 2010

Вы, вероятно, загружаете данные с помощью команды, которая выглядит примерно так:

SELECT * FROM CATEGORY

Если это так, это вернет их в случайном порядке:

SELECT * FROM CATEGORY ORDER BY NEWID()
0 голосов
/ 26 марта 2010

в первом цикле for вместо конкатенации к sCategories добавьте каждое имя категории в коллекцию по вашему выбору. перемешайте записи с помощью алгоритма Фишера-Йейтса, а затем переберите свою коллекцию, чтобы построить окончательную строку.

edit: предыдущая версия вики-страницы для shuffle имеет реализацию vb.net. вот, пожалуйста.

http://en.wikipedia.org/w/index.php?title=Fisher%E2%80%93Yates_shuffle&diff=347101177&oldid=347084753

больше правок: для небольшого количества опций (5 квалификаций) создайте новую таблицу и сохраните в ней каждую перестановку этих 5 имен. когда придет время, выберите случайную строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...