网上搜到的的都不好使,关于linq从数据库随机掏出数据
网上搜到的的都不好使,关于linq从数据库随机取出数据网上搜到的方法有:第一个:在dbcontext里加上这个linqs
网上搜到的的都不好使,关于linq从数据库随机取出数据
网上搜到的方法有:
第一个:
在dbcontext里加上这个
linq sql
[解决办法]你是ef还是linq to sql?
当然,通用的做法
db.Customers.AsEnumerable().OrderBy(x => Guid.NewGuid()).Take(3) 绝对是可以的。
[解决办法]按照你的第一个写法
partial class MyDataContext {
[Function(Name="NEWID", IsComposable=true)]
public Guid Random()
{
throw new NotImplementedException(); //这里不应该有实现。
}
}
[解决办法]按照我的写。
然后
db.Customers.OrderBy(x => db.Random()).Take(3)
[解决办法]
按照你的第一个写法
partial class MyDataContext {
[Function(Name="NEWID", IsComposable=true)]
public Guid Random()
{
throw new NotImplementedException(); //这里不应该有实现。
}
}
……没有实现的话这方法又啥用?那该咋写?
按照我的写。
然后
db.Customers.OrderBy(x => db.Random()).Take(3)
……在这个方法里抛出异常?那程序不是会直接出错吗……
不会,这个方法相当于一个占位符。
[解决办法]说白了就是给C#编译器产生一个MethodCall的表达式。
Linq to SQL Provider根据Attribute就会去执行SQL。这个方法本身不会执行。
[解决办法]使用ADO.NET随即找到一个ID,然后(如果喜欢LINQ Provider的话)可以使用所谓的LINQ读取。
请问谁跟你说过用了Linq Provider就不能使用Ado.net的呢?
[解决办法]效率更高?
直接
select top 10 xx,oo from table order by newid()