我想从大约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条记录?
答案 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);