2012-01-06 11 views
3

私は50レコードのテーブルから15レコードを取得したいと思います。しかし、私はすべてのレコードをランダムに生成したい。もし私が乱数をとり、次のようなものを書いたら:ランダムにレコードを選択するLinq to SQL

var result = (from r in sc.Subjects 
       where (r.SubName == sub && r.Level == lev) 
       select r).skip(randomnumber).take(10), 

開始レコードはランダムですが、次の9は順番になります。どのように私はすべての10のレコードをランダムにSQLにlinqを使用することができますので、任意のアイデアですか?

+4

あなたはこの[解答](http://stackoverflow.com/a/648247/181108)で最初のアプローチを使用することができます。 – Stefan

+0

また、これをチェックしてください:http://msdn.microsoft.com/en-us/library/cc441928.aspx – Ray

+0

コンテキストを追加し、どのLINQを使用しますか、データベースを追加しますか? – oleksii

答えて

0

おそらくLINQ

var result = new List<subject>(); 
for(i = 0; i < 10; i++) 
{ 
    randomnumber = GenerateNewRandomNumber(); 
    result.Add(sc.Subjects.Where(r => r.SubName == sub && r.Level == lev).Skip(randomnumber).take(1).First; 

} 
+0

スキップできる最大値をどのように知っていますか? –

+0

ちょっと、あなたのメソッドはかなり良いようですが、次のエラーが表示されます。 'System.Collections.Generic.List .Add(Genre)'に最適なオーバーロードされたメソッドが無効な引数を持っています –

+0

Take(1 ) '最初に'を追加してください、今はIEnumberableを返すの代わりにジャンル – msarchet

0

を使用して、アイテムを取得するためにforループでこれを行う方が良いでしょう、次を試してみてください。

private static Random Generator = new Random(); 
... 
var result = sc.Subjects.Where(s => s.SubName == sub && s.Level == lev).OrderBy(s => Generator.Next()).Take(10); 
7

私は私のサイトのいずれかでこれを使用して、テーブルからランダムな広告を表示します。そのEF4.0が、Linq2SQLはおそらく同一または類似である:

myAds = (from q in db.Ads select q).OrderBy(x => Guid.NewGuid()).Take(10).ToList(); 
+0

完璧!ありがとう! –

+1

linqtosqlでは動作しません。 – onder

関連する問題