我有一个包含数千条记录的表,其主键名为 Id。
随着时间的推移,记录已被删除,因此 Id 结构如下所示:
ID 1,2,5,7,12,15,17,34,45,89,97 ~ 到 2567,2743,2981 等
使用 c# 和实体框架,有没有办法找到一个特定的 Id 并通过查询检索它以及它周围的下一个和前十个记录?
我想我正在尝试捕获一个记录窗口。在 100 个项目的完美列表中,假设我需要记录 60,是否有可以检索记录 50-70 的查询?
我有一个包含数千条记录的表,其主键名为 Id。
随着时间的推移,记录已被删除,因此 Id 结构如下所示:
ID 1,2,5,7,12,15,17,34,45,89,97 ~ 到 2567,2743,2981 等
使用 c# 和实体框架,有没有办法找到一个特定的 Id 并通过查询检索它以及它周围的下一个和前十个记录?
我想我正在尝试捕获一个记录窗口。在 100 个项目的完美列表中,假设我需要记录 60,是否有可以检索记录 50-70 的查询?
在正常情况下,您不应该关心 Id,因为它们是自动的,并不意味着没有间隙(如果您想做类似的事情)。
不过,您可以使用以下查询选择您的条目:
SELECT TOP 11 Id FROM Table WHERE ID >= 400 ORDER BY ID UNION
SELECT TOP 11 Id From Table WHERE ID <= 400 ORDER BY ID Desc
或者,您可以查看 SQL 的 RANGE 函数,它允许对行进行数字化,然后根据该数字进行选择
以及 Select-Union 的 EF 版本:
idList.Where(id >= 400).OrderBy(id => id).Take(11).Union(
idList.Where(id <= 400).OrderByDescending(id => id).Take(11));