Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDb C#键集分页_C#_Asp.net_Mongodb_Mongodb .net Driver - Fatal编程技术网

MongoDb C#键集分页

MongoDb C#键集分页,c#,asp.net,mongodb,mongodb-.net-driver,C#,Asp.net,Mongodb,Mongodb .net Driver,我正试图用MongoDB c#驱动程序实现键集分页。根据我的理解,键集分页的概念是您必须传递页面中的最后一个id,并找到大于该id的记录 这是我的密码 var filterDef = Builders<Learner>.Filter.Where(predicate); if (!string.IsNullOrWhiteSpace(lastRecordId) && isNextPage) filterDef &= Builders<Learner&

我正试图用MongoDB c#驱动程序实现键集分页。根据我的理解,键集分页的概念是您必须传递页面中的最后一个id,并找到大于该id的记录

这是我的密码

var filterDef = Builders<Learner>.Filter.Where(predicate);
if (!string.IsNullOrWhiteSpace(lastRecordId) && isNextPage)
    filterDef &= Builders<Learner>.Filter.Gt(e => e.Id, lastRecordId);
else if (!string.IsNullOrWhiteSpace(lastRecordId) && !isNextPage)
    filterDef &= Builders<Learner>.Filter.Lt(e => e.Id, lastRecordId);
var findOption = new FindOptions<Learner>
{
    Sort = Builders<Learner>.Sort.Ascending(t => t.CourseStartDate),
    Limit = 10
};
return (await _collection.FindAsync(filterDef, findOption)).ToList();
var filterDef=Builders.Filter.Where(谓词);
if(!string.IsNullOrWhiteSpace(lastRecordId)&&isNextPage)
filterDef&=Builders.Filter.Gt(e=>e.Id,lastRecordId);
如果(!string.IsNullOrWhiteSpace(lastRecordId)&&!isNextPage),则为else
filterDef&=Builders.Filter.Lt(e=>e.Id,lastRecordId);
var findOption=新的findOption
{
Sort=Builders.Sort.Ascending(t=>t.CourseStartDate),
限值=10
};
return(wait_collection.FindAsync(filterDef,findOption)).ToList();
上面的代码在接下来的页面中运行良好。我的意思是用户不断点击下一页,记录就会显示出来。。但问题是,当用户单击上一页时,服务器会从DB发送前10条记录

例如,用户访问记录的第4页,只要他单击上一页,它就会发回用户的前10条记录,而不是中间的10条记录


如何处理这种情况?

您如何知道下一步或上一步单击哪个按钮?还有什么是
isNextPage
?我的UI上有两个按钮“下一个”和“上一个”。当用户单击“下一步”按钮时,我获取最后一个记录id并将其发送到服务器,然后过滤大于该id的记录。当用户单击“上一步”按钮时,我将isNextPage变量设置为false。这意味着现在用户被请求上一页记录。因此,我获取当前页面上第一条记录的id并将其发送到服务器,然后服务器过滤必须小于传递id的记录。但在上一页,在比较小于后,它会给出前10条记录。这有点像重置
Builders.Sort.singressing
可能是您出现问题的原因之一。在以前使用的情况下,
Sort.decenteding