我正在尝试使用 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/