在没有OrderBy的情况下从Entity Framework数据库中选择随机记录 [英] Picking random record from Entity Framework database without OrderBy
本文介绍了在没有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屋!
查看全文