Произвольно выбирайте записи, используя Linq to SQL - PullRequest
3 голосов
/ 06 января 2012

Я хочу получить 15 записей из таблицы, содержащей около 50 записей.но я хочу, чтобы все записи создавались случайным образом.если я возьму случайное число и напишу что-то вроде:

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

, начальная запись будет случайной, но следующие 9 будут в последовательности.так что любая идея о том, как я могу иметь все 10 записей случайным образом, используя linq to sql?

Ответы [ 3 ]

7 голосов
/ 06 января 2012

Я использую это на одном из своих сайтов, чтобы показывать случайные объявления из таблицы.Это EF4.0, но Linq2SQL, вероятно, такой же или похожий:

myAds = (from q in db.Ads select q).OrderBy(x => Guid.NewGuid()).Take(10).ToList();
0 голосов
/ 06 января 2012

Попробуйте следующее:

private static Random Generator = new Random();
...
var result = sc.Subjects.Where(s => s.SubName == sub && s.Level == lev).OrderBy(s => Generator.Next()).Take(10);
0 голосов
/ 06 января 2012

Вероятно, было бы лучше сделать это с помощью цикла for, чтобы получить элемент, а затем использовать 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;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...