2011-12-15 15 views
1

C#でASP.Net MVC3を使用するコントローラでランダムな単一レコードを選択

データベースから単一のランダムレコードを選択する方法を教えてください。

この

は、私がチェックすることはできませんので、モバイルデバイス上で今

CJAd cjad = db.CJAds.Single(c => c.category_id == 1 && c.ad_active == true); 
+0

は、あなたがする必要はありませんので、?.. –

+1

、あなたが今持っているコードを好き '&& c.ad_active == true'には、単に' && c.ad_active'で十分です。 –

答えて

3
var selection = db.CJAds.Where(c => c.category_id == 1 && c.ad_active); 
CJAd cjad = selection 
    .OrderBy(c => c.id) 
    .Skip(new Random().Next(selection.Count())) 
    .First(); 
+0

これはうまく見えますが、Visual Studioではエラーではありませんが、このエラーがスローされます。System.NotSupportedException:メソッド 'Skip'は、LINQ to Entitiesのソート済み入力に対してのみサポートされています。メソッド 'OrderBy'はメソッド 'Skip'の前に呼び出さなければなりません。 –

+0

あなたは使用しているフレームワークについて述べていません。しかし、この場合、スキップの前にいくつかのソート(OrderBy())を追加してください。私はあなたのテーブルを知らないので、私はここであなたを助けることができます。 – Tim

0

イムを持っているコードです。これはうまくいくはずです。

CJAd cjad = db.CJADs.Where(c => c.category_id == 1 && c.ad_active).OrderBy(c => Guid.NewGuid()).FirstOrDefault(); 
+0

これはデータベース上で評価することはできず、完全なテーブルの読み込みとメモリの順序付けにつながると思います。 – Tim

関連する問題