有人知道如何编写 LINQ to SQL 语句来返回表中的每第 n 行吗?我需要获取分页数据网格中每个页面顶部的项目标题,以便快速用户扫描。因此,如果我想要第一条记录,那么此后的每第三条记录都来自以下名称:
艾米、埃里克、杰森、乔、约翰、乔什、玛丽贝尔、保罗、史蒂夫、汤姆
我会找艾米、乔、玛丽贝尔和汤姆。
我怀疑这是可以做到的...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");
您还可以替换 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);
关于sql - 表中的每 N 行 LINQ to SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4208366/