2012-07-15 23 views
7

Ho letto più risposte a una query simile, ma nessuna sembra aver colpito il punto.Ottenere 3 record casuali da una tabella

Immagina di avere una tabella che contiene 10 righe, come faccio a recuperare 3 righe casuali da questa tabella utilizzando Entity Framework? Non solo 1 riga casuale, ma 3 righe casuali, ognuna diversa dall'altra?

Grazie in anticipo

risposta

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

Questa è semplicemente la semplicità! Ciao Darin! – Sniffer

8

Invece, c'è un modo più semplice,

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

Guid.NewGuid sarà po 'più lento in termini di prestazioni, perché non utilizzare a caso specificato dal SqlFunctions stesso?

+0

Sembra che 'Rand' venga valutato solo una volta e quindi non è utile: ho una query sql simile a SELECT TOP (3) - alcune colonne ... FROM (SELEZIONA \t RAND() AS [ C1], \t -. alcune colonne ... \t FROM [dbo] [MyTable] AS [Extent1] ) AS [Project1] ORDER BY [Project1] [C1] ASC'.. Sto usando Sql-Server 2008 R2. –

Problemi correlati