c# - 查询 Entity Framework 中的第 n 行

标签 c# entity-framework

我想从每个 Entity Framework 的表中查询随机行。

目前我能想到的最佳解决方案是从表中获取总计数,然后为每个 C# 创建一个函数来获取计数范围内的随机数,然后查询这个随机行号。

我的问题是我不知道如何直接查询每个 Entity Framework 的特定行号。我想防止我需要查询整个表,然后从那里选择行号。

还是我这里有一个普遍的误解,有更简单的方法?

最佳答案

// DO NOT USE THIS FOR MORE THEN 100 ROWS
var randomRecord = foos.OrderBy( x=> SqlFunctions.Rand() ).FirstOrDefault();

但这种方法效率较低,

// USE THIS FOR MORE THEN 100 ROWS
var random = Math.Random(foos.Count());

var randomRecord = foos.OrderBy( x=> x.id ).Skip( random ).FirstOrDefault();

对于数据库,查询计数比实际对数千条记录执行 SORT over RANDOM 的开销要少得多。由于 RANDOM 肯定没有索引,所以排序会花费很长时间。所以避免使用第一种方法,使用最好的第二种方法。

关于c# - 查询 Entity Framework 中的第 n 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19051241/

相关文章:

c# - 尽管将 ContentPlaceHolder 和 <div> 设置为宽度 :100%,但内容超出了屏幕

c# - 来自 C# 远程服务器的 MysqlBackup

c# - Entity Framework 中的 SqlMethods.DateDiffMonth

c# - EF Core 5.0.4 - 从 core 3.1 升级后,通过 Include() 进行预加载不起作用

c# - Entity Framework 6 Code First TPH 多个派生类中的外键

c# - 在 C# 中读取 Excel 2007 文件 (.xlsx)

c# - 如何处理委托(delegate)目标中发生的异常

c# - Java 的 ForkJoinTask<V> 的 .NET 等价物是什么?

c# - 查询多个数据库的存储库模式

c# - 在 Aspnet Core 中加载元数据