首页 新闻 会员 周边 捐助

Linq To Sql 如何替代 newid()

0
悬赏园豆:5 [已解决问题] 解决于 2008-10-29 09:18

select top 50 * from tt order by newid()

现在如果要用linq去实现,这个语句要怎么写,高手请指教。

chenming的主页 chenming | 初学一级 | 园豆:0
提问于:2008-10-28 09:58
< >
分享
最佳答案
0

Linq To Sql中没有newid()方法

不过可以这样写
(from q in db.tt orderby Guid.NewGuid() select q).Take(50);

或者

因为NewId返回uniqueidentifier类型,我们将这个函数定义为

[Function(Name = "NewID", IsComposable = true)]
public Guid NewID()
{
return ((Guid)(this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod()))).ReturnValue));
}

调用时,可以

var q = db.Table1.OrderBy(p => db.NewID()).Take(10).ToList();

RicoRui | 老鸟四级 |园豆:3663 | 2008-10-28 10:00
其他回答(1)
0

楼上的方法无效

Linq to sql允许将SQL的存储过程映射为方法,所以可以将NEWID存储过程映射出来

Gray Zhang | 园豆:17610 (专家六级) | 2008-10-28 10:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册