2012-01-06 3 views
3

Я хочу получить 15 записей из таблицы около 50 записей. но я хочу, чтобы все записи генерировались случайным образом. если я взять случайное число и написать что-то вроде:Случайно Выберите записи, используя 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 записей случайным образом, используя linq для sql?

+4

Вы можете использовать первый подход в этом [ответ] (http://stackoverflow.com/a/648247/181108). – Stefan

+0

Также проверьте это: http://msdn.microsoft.com/en-us/library/cc441928.aspx – Ray

+0

Добавить контекст, какой LINQ вы используете, любую базу данных? – oleksii

ответ

0

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

} 
+0

Как узнать максимальное значение, которое вы можете пропустить? –

+0

эй, ваш метод кажется довольно хорошим, но im получает следующую ошибку: Наилучшее перегруженное соответствие метода для 'System.Collections.Generic.List .Add (Genre)' имеет некоторые недопустимые аргументы –

+0

После Take (1)) добавьте 'First', прямо сейчас он возвращает IEnumberable вместо Genre – msarchet

0

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

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

Смежные вопросы