通过EF获取随机行

时间:2017-03-13 09:46:25

标签: asp.net-mvc entity-framework asp.net-core

我正在构建一个asp.net核心webapp,现在我需要从数据库(sql)中收集一个随机行,以便在其中一个视图中发布。非常感谢我能做的任何帮助和理解这一点。代码,解释,发布链接,enything非常有用。

我不完全理解EF-asp.net核心是如何运作的,因此在搜索与我的问题相关的帖子时真正难以理解。

提前谢谢。

/彼得

2 个答案:

答案 0 :(得分:2)

由于您使用EF,我将为您提供LINQ解决方案。

int total = context.YourEntities.Count();
Random r = new Random();
int offset = r.Next(0, total);

var result = context.YourEntities.Skip(offset).FirstOrDefault();

所有这些代码都是获取记录总数,并生成[0,总数]之间的随机数。注意边界类型:从低端包含,从高端独占。

您使用此随机数作为"偏移",即要跳过多少条记录(.Skip(offset)),然后检索序列剩余部分的第一个元素。如果根本没有记录,FirstOrDefault会返回null

答案 1 :(得分:2)

在EF(EF核心)中,您可以通过以下方式简单地使用LINQ语法(OrderBy方法):

context.MyEntities.OrderBy(r => Guid.NewGuid()).Take(10);