2012-07-15 22 views
7

Ich habe mehrere Antworten auf eine ähnliche Abfrage gelesen, aber keiner scheint auf den Punkt zu treffen.3 zufällige Datensätze aus einer Tabelle erhalten

Stellen Sie sich vor Ich habe eine Tabelle, die 10 Zeilen enthält. Wie lade ich 3 zufällige Zeilen aus dieser Tabelle mit Entity Framework? Nicht nur eine zufällige Reihe, sondern 3 zufällige Reihen - jede von der anderen verschieden?

Vielen Dank im Voraus

Antwort

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

Nun, das ist Einfachheit super! Prost Danke! – Sniffer

8

Stattdessen gibt es einen einfacheren Weg,

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

Guid.NewGuid wird in der Leistung sein, etwas langsamer, warum Zufall von SqlFunctions angegeben nicht selbst verwenden?

+0

Es scheint, dass "Rand" nur einmal ausgewertet wird und daher nicht sinnvoll ist: Ich habe eine SQL-Abfrage, die aussieht wie SELECT TOP (3) - einige Spalten ... FROM (SELECT \t RAND() AS [ C1], \t -. einige Spalten ... \t FROM [DBO] [MyTable] AS [Extent1] ) AS [Project1] ORDER BY [Project1] [C1] ASC'.. Ich benutze Sql-Server 2008 R2. –

Verwandte Themen