2012-07-15 73 views
7

我已阅读了类似查询的多个答案,但没有一条似乎击中了现场。从表格中获取3条随机记录

想象一下,我有一个包含10行的表,如何使用实体框架从此表中检索3个随机行?不只是1个随机行,而是3个随机行 - 每个都不同于另一行?

在此先感谢

回答

18
var threeRandomFoos = foos.OrderBy(x => Guid.NewGuid()).Take(3); 
+0

现在,这是简单真棒!干杯达林! – Sniffer 2012-07-15 19:28:03

8

相反,还有一个更简单的方法,

var threeRandomFoos = foos.OrderBy(x=> SqlFunctions.Rand()).Take(3); 

Guid.NewGuid会有点性能慢,为什么不使用随机的SqlFunctions本身规定的?

+0

似乎'Rand'只计算一次,因此是没有用的:我有一个SQL查询,看起来像'SELECT TOP(3) - 有些列... FROM(SELECT \t RAND()AS [ C1], \t - 某些列... \t FROM [dbo]。[MyTable] AS [Extent1] )AS [Project1] ORDER BY [Project1]。[C1] ASC'。我正在使用Sql-Server 2008 R2。 – 2014-02-18 13:34:20