c# - 在没有 OrderBy 的情况下从 Entity Framework 数据库中选择随机记录

标签 c# linq entity-framework

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

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

但我得到异常告诉我:

{"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)) 以选择随机元素(应该是常数)看起来并不明智。

编辑:我使用 Entity Framework 6.1.1。

最佳答案

你可以有这样的东西:

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

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

在这里,黑魔王向尤达传授原力!世界正在走向何方!

关于c# - 在没有 OrderBy 的情况下从 Entity Framework 数据库中选择随机记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25835184/

相关文章:

c# - 如何创建一个返回匿名类型的 IEnumerable 的方法

c# - 这是什么类型的标记?

c# - 想从asp.net网站发送自动邮件

c# - AutoMapper 项目嵌套对象,其中内部对象可为空失败

c# - 在此上下文中仅支持原始类型或枚举类型

c# - 对不一致的行结尾说"is"?

c# - 我如何将其写成单个 LINQ 查询?

c# - 如何使用 linq 和 c# 根据列中行之间的差异进行分组?

c# - 如何使用 LINQ 检索 SharePoint 用户数据?

c# - 将实体对象转换为 IEnumerable