sql - 表中的每 N 行 LINQ to SQL

标签 sql sql-server linq linq-to-sql

有人知道如何编写 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/

相关文章:

c# - LINQ for CRM 如何在 where 子句中使用 C# 列表

sql - 防止 SQL Server 中的死锁

mysql - 更新自连接表

mysql - 为什么PRIMARY_KEY没有被永久删除?

sql - Oracle 中不是 REGEXP_LIKE

sql-server - 限制 NLog 数据库目标大小

c# - LINQ:将单个列表分离为多个列表

sql-server - SQL Server存储过程中的跟踪(如OutputDebugString/Trace.writeline)

sql-server - 在查询中定义的列别名如何在sql server中的同一个查询中使用where子句

.net - 我可以依赖 LINQ ToArray() 总是返回一个新实例吗?