使用Linq to SQL随机选择记录

时间:2012-01-06 15:26:53

标签: c# .net linq linq-to-sql

我想从大约50条记录的表中检索15条记录。但我想要随机生成所有记录。如果我拿一个随机数并写下类似的东西:

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

起始记录将是随机的,但接下来的9将按顺序排列。所以任何想法如何使用linq到sql随机拥有所有10条记录?

3 个答案:

答案 0 :(得分:7)

我在我的某个网站中使用此功能,以显示表格中的随机广告。它的EF4.0,但Linq2SQL可能是相同或类似的:

myAds = (from q in db.Ads select q).OrderBy(x => Guid.NewGuid()).Take(10).ToList();

答案 1 :(得分: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;

}

答案 2 :(得分: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);