2012-07-15 60 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