2012-07-15 16 views
7

He leído varias respuestas a una consulta similar, pero ninguna parece dar en el clavo.Obtención de 3 registros aleatorios de una tabla

Imagine que tengo una tabla que contiene 10 filas, ¿cómo puedo recuperar 3 filas aleatorias de esta tabla usando Entity Framework? No solo una fila al azar, sino 3 filas aleatorias, ¿cada una es diferente de la otra?

Gracias de antemano

Respuesta

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

¡Ahora que es simplicidad increíble! ¡Saludos, Darin! – Sniffer

8

En cambio, hay una manera más sencilla,

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

Guid.NewGuid será poco más lento en el rendimiento, por qué no usar aleatoria especificada por sí mismo SqlFunctions?

+0

Parece que 'Rand' se evalúa solo una vez y por lo tanto no es útil: Tengo una consulta sql que se parece a' SELECCIONAR TOP (3) --algunas columnas ... FROM (SELECCIONAR \t RAND() AS [ C1], \t -. algunas columnas ... \t DE [dbo] [MyTable] AS [Extent1] ) AS [Proyecto1] ORDER BY [Proyecto1] [C1] ASC'.. Estoy usando Sql-Server 2008 R2. –

Cuestiones relacionadas