2009-08-18 12 views
1

LINQからSQL Table [T]までの5つのランダムレコードを取得するにはどうすればよいですか?ランダムなLINQ to SQLのレコードが "int"のプライマリキー

私としてUNIQUEIDENTIFIER使用グーグル経由で見つけたすべての例では、プライマリキー

http://www.davidmuto.com/Blog.muto/View/random-records-with-linq-to-sql

主キーが自動インクリメント整数であるとき、これを行う方法はありますか?

一部のレコードも削除できますので、最小から最大までのIDセットには穴があります。

ご協力いただきまして誠にありがとうございます。

-CV

答えて

1

あなたが求めているものを行うための方法を持っているように見えます。この記事を見てみることができ起動するには:http://weblogs.asp.net/fmarguerie/archive/2008/01/10/randomizing-linq-to-sql-queries.aspx

レッツ・詳細 SQLユーザーを使用するソリューションを定義された関数。ほとんどの レコードをランダムに並べ替える一般的な方法は で、NEWID SQL Server関数を使用します。 これはこのソリューションが使用するものです。

まず、次のビューを作成します。

はVIEW RandomView AS SELECT NEWIDを(CREATE)IDが次にビューを使用しています 次の関数を作成するとする:

(FUNCTION GetNewIdをCREATE)はAS UNIQUEIDENTIFIERをRETURNS RETURN をBEGIN可能 直接スカラーFのNEWIDを使用することはないので、ビューが必要とされる

END(RandomViewからIDを選択)統一。

次に、GetNewId ユーザー定義関数をLINQを使用して SQLの関数属性にマップできます。繰り返しますが、詳細は の第8章を参照してください。

これだけです!通常どおりLINQ クエリを書くことができます。ここで、ランダムなオブジェクト選択する例 ある:

VARツール= db.Tools.OrderBy(T => db.GetNewId())まず()ここで

はGetNewIdを使用する別の例です。ランダムに結果をソートするに:db.Toolsでツールから

VARツール=
orderbyのdb.GetNewId() tool.Nameを選択します。

この記事はSOでもあります:Random row from Linq to Sql