代码之家  ›  专栏  ›  技术社区  ›  CVertex

随机LINQ到SQL记录w/“int”主键

  •  1
  • CVertex  · 技术社区  · 15 年前

    我通过google找到的所有示例都使用uniqueidentifier作为主键

    http://www.davidmuto.com/Blog.muto/View/random-records-with-linq-to-sql

    当主键是一个自动递增的整数时,有没有办法做到这一点?

    某些记录也可以删除,因此从最小到最大ID集将有洞。

    非常感谢您的帮助。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Community Neeleshkumar S    7 年前

    首先,你可以看看这篇文章,它似乎有一种方法可以实现你的目标: http://weblogs.asp.net/fmarguerie/archive/2008/01/10/randomizing-linq-to-sql-queries.aspx

    让我们详细介绍一下使用 SQL用户定义函数。最 使用NEWID SQL Server函数。 这就是这个解决方案所使用的。

    首先,创建以下视图:

    创建视图随机视图作为选择 使用视图的以下函数:

    作为开始返回的唯一标识符 (从随机视图中选择ID)结束

    视图是必需的,因为它不是 标量函数。

    然后可以映射GetNewId 使用LINQ的用户定义函数 第八章详细介绍。

    就这样!你现在可以写LINQ了 和往常一样。这里有一个例子

    var tool=db.Tools.OrderBy(t=> db.GetNewId()).First()

    下面是另一个使用 GetNewId可对结果进行随机排序:

    var tools=数据库中的from tool.tools
    orderby db.GetNewId()选择 工具名称;

    Random row from Linq to Sql