我尝试从数据库中获取随机记录:
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/