使用Linq选择N个随机记录

dex*_*ter 17 linq-to-sql

我有一个包含20多条记录的静态表,我想以随机的方式从该表中选择N(N <20).使用LINQ在代码中执行此操作的最佳方法是什么?

rea*_*ers 96

这是最好的方法:

var randomUsers = users.OrderBy(x => Guid.NewGuid()).Take(15);
Run Code Online (Sandbox Code Playgroud)

  • Dave Hillier,我认为选择"随机选择"的问题是必须解决它的随机元素.生成Guids并对它们进行排序是有成本的,但它是一个非常干净和可靠的代码,用于获取随机设置.(因为GUID会在每次运行查询时创建一个新的随机顺序.)如果记录集很大,那么创建一些代码可能会随机从结果集中随机选择N个唯一记录. (6认同)
  • 我知道这是很久以前但你的答案对我来说很完美,我看起来已经很久了!! thabks (2认同)

Ran*_*der 2

也许这样的事情会起作用:

int randomSkip;
int randomTake;

randomSkip = GenerateSomeAppropriateRandomNumber();
randomTake = GenerateSomeAppropriateRandomNumber();

resultSet = iEnumerable.Skip(randomSkip).Take(randomTake);
Run Code Online (Sandbox Code Playgroud)

  • 不,我总是想选择固定数量的记录。但该子集中的记录应该是随机的。 (4认同)