我正在构建一个asp.net核心webapp,现在我需要从数据库(sql)中收集一个随机行,以便在其中一个视图中发布。非常感谢我能做的任何帮助和理解这一点。代码,解释,发布链接,enything非常有用。
我不完全理解EF-asp.net核心是如何运作的,因此在搜索与我的问题相关的帖子时真正难以理解。
提前谢谢。
/彼得
答案 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);