首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

网上搜到的的都不好使,关于linq从数据库随机掏出数据

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

热点排行