c# - Cosmos DB 分页和排序

标签 c# .net sorting pagination azure-cosmosdb

我正在尝试使用 LINQ 在数据库端进行分页和排序。据我所知,Cosmos db 不支持子查询,这意味着我可以进行分页工作或排序。

我的问题是我想有什么选择可以超越这个吗?

这是我的代码:

var query = documentContainer.GetItemLinqQueryable<CosmosEntity>(true)
                .Where(p => p.PartitionKey == id)
                .Skip(searchRequest.Qualifiers.RecordsPerPage * (searchRequest.Qualifiers.CurrentPage - 1))
                .Take(searchRequest.Qualifiers.RecordsPerPage)
                .OrderBy(x => x.DocumentType)

不幸的是它返回了

OFFSET LIMIT' clause is not supported in subqueries.

有什么办法可以让我做到这一点吗?我想我可以在 CosmosDB 上进行分页并在服务器端的内存中进行排序,但这不是理想的情况......

提前致谢!

最佳答案

你能试试这个吗?在skip之前添加ORDER BY

var query = documentContainer.GetItemLinqQueryable<CosmosEntity>(true)
                .Where(p => p.PartitionKey == id)
                .OrderBy(x => x.DocumentType)
                .Skip(searchRequest.Qualifiers.RecordsPerPage * (searchRequest.Qualifiers.CurrentPage - 1))
                .Take(searchRequest.Qualifiers.RecordsPerPage)
            

关于c# - Cosmos DB 分页和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72216715/

相关文章:

c# - 设计流畅的构建器以在 C# 中创建对象图

c# - Quartz.Net 依赖注入(inject) .Net Core

python - 就地排序的子列表

mysql - 使用 MySQL 根据字段值进行排序和分组

Linux awk 降序排序不起作用

c# - 无法找到名称为 Pomelo.EntityFrameworkCore.MySql 的提供程序集

c# - 如何加密 .zip 文件?

c# - 如何使用控件的类名或其值而不是 ID 来调用 HTML 按钮的单击函数?

.net - vstest.console.exe执行模型和隔离行为

c# - 将变量从 VB 函数传递到客户端 javascript