linq to entity的问题

o_Sara 2012-07-09 06:12:28
linq to entity 中能用NEWID()这种sql函数么?不能的话 该怎么随机获取一条数据?
...全文
126 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
o_Sara 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
Take() 方法是非延迟操作符
破坏了LINQ的延迟查询特性
[/Quote]

加分,谢谢TIM 淡泊 Chinajiyong
o_Sara 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
引用 3 楼 的回复:

引用 1 楼 的回复:
可以这样

C# code


var query= from rnd in new BackendDBContext().Categories
orderby Guid.NewGuid()
select rnd;


你这样不是取出全部了么,如果我在加上.Take(1)的话这里的随机函数就没有作用了?为什么

SEL……
[/Quote]
呵呵 是我的错,上边大神的代码是可以的。我疏忽了...
不过根据我的业务需要,我没用Lambda表达式,写了个存储过程然后在用linq执行,
q107770540 2012-07-10
  • 打赏
  • 举报
回复
Take() 方法是非延迟操作符
破坏了LINQ的延迟查询特性
o_Sara 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
可以这样

C# code


var query= from rnd in new BackendDBContext().Categories
orderby Guid.NewGuid()
select rnd;
[/Quote]

你这样不是取出全部了么,如果我在加上.Take(1)的话这里的随机函数就没有作用了?为什么

SELECT TOP 1 * FROM dbo.Coupon ORDER BY NEWID()
claymore1114 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 1 楼 的回复:
可以这样

C# code


var query= from rnd in new BackendDBContext().Categories
orderby Guid.NewGuid()
select rnd;


你这样不是取出全部了么,如果我在加上.Take(1)的话这里的随机函数就没有作用了?为什么

SELECT TOP 1 ……
[/Quote]
First还是Take(1) 都可以,你都按 随机数排序,怎么会没用呢,肯定有用的。
没用 贴你代码,或者查看生成的sql语句,应该没有问题的。
EnForGrass 2012-07-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

可以这样
C# code

var query= from rnd in new BackendDBContext().Categories
orderby Guid.NewGuid()
select rnd;
[/Quote]
如果是Linq to sql
2、linq to sql中还可以在dbcontext下定义


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


可以这样调用

var query= from rnd in new BackendDBContext().Categories
orderby new dbcontext().NEWID()
select rnd;
EnForGrass 2012-07-09
  • 打赏
  • 举报
回复
可以这样

var query= from rnd in new BackendDBContext().Categories
orderby Guid.NewGuid()
select rnd;

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧