2012-07-15 7 views
7

私は同様のクエリに対して複数の回答を読んだことがありますが、そのどれも現れていないようです。テーブルから3つのランダムなレコードを取得する

私は10行を含むテーブルを持っていると思いますが、Entity Frameworkを使用してこのテーブルから3つのランダムな行を取得するにはどうすればよいですか?ランダムな行は1つではありませんが、ランダムな行は3つあります。 SqlFunctions自体で指定されたランダムを使用していない理由を事前に

おかげ

答えて

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

これでシンプルさが素晴らしいです!乾杯! – Sniffer

8

は代わりに、もっと簡単な方法があり、

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

はGuid.NewGuidは、パフォーマンスが少し遅くなりますか?

+0

'Rand'は一度しか評価されないので有用ではないようです:' SELECT TOP(3) - いくつかの列... \t RAND()AS [ C1]、 \t - \t FROM [dbo]。[MyTable] AS [Extent1] )[Project1] ORDER BY [Project1]。[C1] ASC'。私はSQL Server 2008 R2を使用しています。 –

関連する問題