LINQ to SQL每隔表第N行

Eri*_*ham 15 sql linq sql-server linq-to-sql

有谁知道如何编写LINQ to SQL语句来返回表中的每第n行?我需要在分页数据网格中的每个页面顶部获取项目的标题,以便快速扫描用户.所以,如果我想要第一条记录,那么之后的第三条记录,来自以下名称:

Amy,Eric,Jason,Joe,John,Josh,Maribel,Paul,Steve,Tom

我会得到艾米,乔,玛丽贝尔和汤姆.

我怀疑这可以做到...... LINQ to SQL语句已经结合排序和分页调用ROW_NUMBER()SQL函数.我只是不知道如何取回每一个项目.SQL语句就像WHERE ROW_NUMBER MOD 3 = 0,但我不知道用于获取正确SQL的LINQ语句.

Mar*_*ell 9

有时,TSQL是最佳选择.我会ExecuteQuery<T>在这里使用:

    var data = db.ExecuteQuery<SomeObjectType>(@"
SELECT * FROM 
(SELECT *, ROW_NUMBER() OVER (ORDER BY id) AS [__row]
FROM [YourTable]) x WHERE (x.__row % 25) = 1");
Run Code Online (Sandbox Code Playgroud)

你也可以换掉n:

    var data = db.ExecuteQuery<SomeObjectType>(@"
DECLARE @n int = 2
SELECT * FROM 
(SELECT *, ROW_NUMBER() OVER (ORDER BY id) AS [__row]
FROM [YourTable]) x WHERE (x.__row % @n) = 1", n);
Run Code Online (Sandbox Code Playgroud)