Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

linq: order by random

Tags:

c#

random

linq

How can I change below code, to each time get 50 different random data from database?

return (from examQ in idb.Exam_Question_Int_Tbl       where examQ.Exam_Tbl_ID==exam_id       select examQ).OrderBy(x=>x.Exam_Tbl_ID).Take(50); 
like image 263
user972087 Avatar asked Feb 26 '12 00:02

user972087


1 Answers

http://msdn.microsoft.com/en-us/library/system.guid.newguid.aspx

return (from examQ in idb.Exam_Question_Int_Tbl       where examQ.Exam_Tbl_ID==exam_id       select examQ).OrderBy(x => Guid.NewGuid()).Take(50); 

If this is LINQ-to-SQL you could simply add a ORDER BY NEWID() to your SELECT statement.

As commented it might be better to use an algorithm like Fisher-Yates Shuffle, here is an implementation: https://stackoverflow.com/a/375446/284240

like image 153
Tim Schmelter Avatar answered Sep 28 '22 02:09

Tim Schmelter