检索实体框架中的记录和周围记录

时间:2013-07-31 12:25:09

标签: c#-4.0 entity-framework-4

我有一个包含数千个记录的表,其中包含一个名为Id的主键。

随着时间的推移,记录已被删除,因此Id结构如下所示:

Ids 1,2,5,7,12,15,17,34,45,89,97~2567,2743,2981等

使用c#和Entity Framework,有没有办法找到一个特定的ID并使用查询检索它以及它周围的下一个和前十个记录?

我想我正试图抓住一个记录窗口。在100个项目的完美列表中,让我说我需要记录60,是否有查询将检索记录50-70?

1 个答案:

答案 0 :(得分:1)

在正常情况下,你不应该关心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));