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语句.
有时,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)