在没有OrderBy的情况下从Entity Framework数据库中选择随机记录 [英] Picking random record from Entity Framework database without OrderBy

查看:57
本文介绍了在没有OrderBy的情况下从Entity Framework数据库中选择随机记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试从数据库中获取随机记录:

I try to get random record from database:

 personToCall = db.Persons.Skip(toSkip).Take(1).First();

但我收到异常消息,告诉我:

but I get exception which tells me:

{"The method 'Skip' is only supported for sorted input in LINQ to Entities. The method 'OrderBy' must be called before the method 'Skip'."}

我可以在没有 OrderBy 的情况下这样做吗?对数据结构(O(nlogn))进行排序以选择随机元素(应为常数)看起来并不明智.

Can I do it without OrderBy? Sorting data structure (O(nlogn)) to pick random element(which should be constant) doesn't look wise.

编辑:我使用的是Entity Framework 6.1.1.

I use Entity Framework 6.1.1.

推荐答案

您可以输入类似以下内容:

You can have something like :

personToCall = db.Persons.OrderBy(r => Guid.NewGuid()).Skip(toSkip).Take(1).First();

您应该使用 FirstOrDefault 进行模式防御.

You should use FirstOrDefault to be mode defensive.

在这里,黑暗的领主向尤达传授力量!世界将走向何方!

Here the dark lord teaching the force to yoda! what is the world coming to!

这篇关于在没有OrderBy的情况下从Entity Framework数据库中选择随机记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆