来自 MYSQL 中某个范围的 Entity Framework Core 随机记录
Posted
技术标签:
【中文标题】来自 MYSQL 中某个范围的 Entity Framework Core 随机记录【英文标题】:Entity Framework Core random records from a range in MYSQL 【发布时间】:2021-10-26 16:59:38 【问题描述】:我需要使用 Entity Framework Core(使用 Pomelo 提供程序)从 mysql 数据库中选择 10 条 ID 介于 1 到 600 之间的随机记录。这可能吗?
我尝试了dbContext.MyTable.OrderBy(r => Guid.NewGuid()).Take(10);
,如其他线程中所述,但显然它不适用于 MySQL。
有什么想法吗?
【问题讨论】:
“它不起作用”是什么意思? 显然 Mysql 不支持 NewGuid(),如下所述:***.com/q/20714933/13325144 【参考方案1】: var ids = new List<int>();
var r = new Random();
for (int i = 0; i < 10; i++)
ids.Add(r.Next(1,600));
dbContext.MyTable.Where(z => ids.Contains(z.Id)).OrderBy(x => x.Id);
通常需要注意的是,根据 Microsoft Docs 的说法,Random 类“表示伪随机数生成器,它是一种生成满足某些随机性统计要求的数字序列的算法。”
【讨论】:
非常感谢@Marc,它就是这样工作的!唯一没有的是“.Dump()”部分......返回错误“int不包含'Dump'的定义并且没有可访问的扩展方法'Dump'接受'int'类型的第一个参数可以找到(您是否缺少 using 指令或程序集引用?)。我仍在学习 .net,所以我不知道这个错误意味着什么。 是的...对不起。我正在使用 Linqpad。 Dump() 是一个 Linqpad 表达式。我会建议它(与它无关,只是一个热心的用户)。有一个免费版本,但如果你能负担得起,每一美元都是值得的。以上是关于来自 MYSQL 中某个范围的 Entity Framework Core 随机记录的主要内容,如果未能解决你的问题,请参考以下文章
mysql如何查询某个datetime字段的范围是一个小时范围以内的记录,比如查询今天上午八点到九