Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过LINQ从SQL中提取随机且唯一的记录_C#_Asp.net_Linq To Sql - Fatal编程技术网

C# 如何通过LINQ从SQL中提取随机且唯一的记录

C# 如何通过LINQ从SQL中提取随机且唯一的记录,c#,asp.net,linq-to-sql,C#,Asp.net,Linq To Sql,好的,我在SO上找到了很多关于如何在使用LINQ时从数据库中提取随机项的帖子。似乎有两种不同的方法来处理这个问题。但我需要做的是从数据库中随机抽取一个用户以前从未见过的项 我从数据库中提取的数据非常小。有没有办法我只需点击数据库一次1000条记录,然后随机滚动这些记录 我是否应该在用户系统上放置一个cookie,记录他们看到的项目的ID,随机抽取一条记录,检查是否看到,如果看到,再次从数据库中抽取?这似乎是等待发生的性能问题 我不期望任何人为我编写代码,我只是在寻找概念,并指出我应该如何进行这项

好的,我在SO上找到了很多关于如何在使用LINQ时从数据库中提取随机项的帖子。似乎有两种不同的方法来处理这个问题。但我需要做的是从数据库中随机抽取一个用户以前从未见过的项

我从数据库中提取的数据非常小。有没有办法我只需点击数据库一次1000条记录,然后随机滚动这些记录

我是否应该在用户系统上放置一个cookie,记录他们看到的项目的ID,随机抽取一条记录,检查是否看到,如果看到,再次从数据库中抽取?这似乎是等待发生的性能问题

我不期望任何人为我编写代码,我只是在寻找概念,并指出我应该如何进行这项工作的正确方向


需要更多细节吗?让我知道

这个问题的通常答案是创建一个随机排序的列表,然后线性滚动。所以你会拉

a, b, c, d, e, f
使用随机化算法重新排序,以

b, e, f, a, c, d

然后做一个线性行走。

我还想补充一点——你可以存储一个种子和与个体相关的顺序位置,这样你就不必存储整个序列——它允许你重新计算并从它们停止的地方开始。当你有一个定义良好的某种键序列时,这肯定会起作用。我关心的是如何将排序与密钥序列中有漏洞的一组记录连接起来。我最终使用了一种洗牌算法,此时我仍将返回数据库检查是否已经看到该项。我遇到的问题是,这可能是由于多次访问该站点,数据确实发生了变化。