【问题标题】:Random Function from SQL Server database in ASP .NETASP .NET 中 SQL Server 数据库中的随机函数
【发布时间】:2010-03-26 17:42:03
【问题描述】:

我正在创建一个使用 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 中创建一个随机字符串,以使类别每次都相同。

任何帮助将不胜感激。谢谢

【问题讨论】:

  • 您的意思是使用 ASP .NET 作为前端吗?
  • 嗯,我正在使用 ASP .NET 来运行我的网站......因此我正在使用 Visual Studio 2008 进行编程并且我的页面是编写的(即 home.aspx、home.aspx.vb)我需要什么是为 home.aspx.vb 编写的代码

标签: asp.net sql sql-server visual-studio-2008 tsql


【解决方案1】:

您可能使用如下命令加载数据表:

SELECT * FROM CATEGORY

如果是这样,这将以随机顺序返回它们:

SELECT * FROM CATEGORY ORDER BY NEWID()

【讨论】:

  • @egrunin 你的方法绝对完美。我不能要求比添加两个词更好的了。非常感谢! - 我会给你一个赞成票...但我还没有足够的声誉:(
【解决方案2】:

在您的第一个 for 循环中,不要连接到 sCategories,而是将每个类别名称添加为您选择的集合。使用 Fisher-Yates 算法对条目进行打乱,然后遍历您的集合以构建最终字符串。

edit: 用于 shuffle 的 wiki 页面的先前版本具有 vb.net 实现。给你。

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

更多编辑:对于少量选项(5 个合格),创建一个新表并将这 5 个名称的每个排列存储在其中。时机成熟时,随机选择一行。

【讨论】:

  • 我不是最有经验的 ASP .NET 程序员,但一定有比这更简单的方法。也许我应该指定最多只有 5 个类别。因此 i
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
相关资源
最近更新 更多