使用具有唯一数据/无重复记录的Linq to SQL来检索随机行的最佳(且最快)方法是什么?哦,我愿意在1个声明中做到这一点,它有可能吗? 我发现了这个relevant question,但我不认为这种方法会产生独特的记录。
到目前为止我已尝试过这个:
//first approach
AirAsiaDataContext LinqDataCtx = new AirAsiaDataContext();
var tes = (from u in LinqDataCtx.users.AsEnumerable()
orderby Guid.NewGuid()
select u).Take(5);
//second approach
var usr = from u in LinqDataCtx.users
select u;
int count = usr.Count(); // 1st round-trip
int index = new Random().Next(count);
List<user> tes2 = new List<user>();
for (int i = 0; i < 5; i++)
{
tes2.Add(usr.Skip(index).FirstOrDefault()); // 2nd round-trip
}
正如您在上面所看到的,我已经尝试了2个解决方案,但它可以工作,但是上面的代码没有产生唯一记录,有可能重复。
答案 0 :(得分:-1)
db.TableName.OrderBy(x=>Guid.NewGuid()).FirstOrDefault();
如果您想获取唯一数据/没有重复记录, 你最好使用另一个列表存储你已经删除的行。