读书人

网上搜到的的都不好使关于linq从数据

发布时间: 2013-10-25 14:36:53 作者: rapoo

网上搜到的的都不好使,关于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(); //这里不应该有实现。
}
}
[解决办法]
引用:
Quote: 引用:

按照你的第一个写法

partial class MyDataContext {
[Function(Name="NEWID", IsComposable=true)]
public Guid Random()
{
throw new NotImplementedException(); //这里不应该有实现。
}
}


……没有实现的话这方法又啥用?那该咋写?

按照我的写。

然后
db.Customers.OrderBy(x => db.Random()).Take(3)
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

按照你的第一个写法

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()

读书人网 >.NET

热点推荐