C# 如何通过LINQ从SQL中提取随机且唯一的记录
好的,我在SO上找到了很多关于如何在使用LINQ时从数据库中提取随机项的帖子。似乎有两种不同的方法来处理这个问题。但我需要做的是从数据库中随机抽取一个用户以前从未见过的项 我从数据库中提取的数据非常小。有没有办法我只需点击数据库一次1000条记录,然后随机滚动这些记录 我是否应该在用户系统上放置一个cookie,记录他们看到的项目的ID,随机抽取一条记录,检查是否看到,如果看到,再次从数据库中抽取?这似乎是等待发生的性能问题 我不期望任何人为我编写代码,我只是在寻找概念,并指出我应该如何进行这项工作的正确方向C# 如何通过LINQ从SQL中提取随机且唯一的记录,c#,asp.net,linq-to-sql,C#,Asp.net,Linq To Sql,好的,我在SO上找到了很多关于如何在使用LINQ时从数据库中提取随机项的帖子。似乎有两种不同的方法来处理这个问题。但我需要做的是从数据库中随机抽取一个用户以前从未见过的项 我从数据库中提取的数据非常小。有没有办法我只需点击数据库一次1000条记录,然后随机滚动这些记录 我是否应该在用户系统上放置一个cookie,记录他们看到的项目的ID,随机抽取一条记录,检查是否看到,如果看到,再次从数据库中抽取?这似乎是等待发生的性能问题 我不期望任何人为我编写代码,我只是在寻找概念,并指出我应该如何进行这项
需要更多细节吗?让我知道 这个问题的通常答案是创建一个随机排序的列表,然后线性滚动。所以你会拉
a, b, c, d, e, f
使用随机化算法重新排序,以
b, e, f, a, c, d
然后做一个线性行走。我还想补充一点——你可以存储一个种子和与个体相关的顺序位置,这样你就不必存储整个序列——它允许你重新计算并从它们停止的地方开始。当你有一个定义良好的某种键序列时,这肯定会起作用。我关心的是如何将排序与密钥序列中有漏洞的一组记录连接起来。我最终使用了一种洗牌算法,此时我仍将返回数据库检查是否已经看到该项。我遇到的问题是,这可能是由于多次访问该站点,数据确实发生了变化。