【发布时间】:2017-01-04 20:22:46
【问题描述】:
我正在使用 Microsoft.Office365.OutlookServices 来使用 Office 365 Outlook Web 服务。
我正在尝试使用分页支持查询用户的收件箱。像这样:
var query = from t in outlookServicesClient.Me.Folders.GetById("Inbox").Messages
select t;
var mailResults = await query
.OrderByDescending(i => i.DateTimeReceived)
.Skip((pageNo - 1) * pageSize)
.Take(pageSize)
.ExecuteAsync();
假设 pageSize = 10,并且用户在他的收件箱中有 10 条消息,属性 mailResults.MorePagesAvailable 返回 True,不正确的应该返回 False。
仅当 pageSize 等于用户收件箱中的邮件数量时才会发生这种情况。例如,如果用户的收件箱中有 9 条消息,则该属性返回 False。
我做错了什么?
谢谢!
【问题讨论】:
-
作为健全性检查 - 当您通过 pageSize = 10 时,pageNo 的值是多少?我认为传递给
Skip()和Take()的值可能有问题 -
pageNo 的值等于 1。(pageNo -1) * pageSize -> (1 - 1) * 10 = 0 * 10 = 0。
-
尝试将代码更改为
var mailResults = await (from i in outlookClient.Me.Folders.GetById("Inbox").Messages orderby i.DateTimeReceived descending select i).Skip((pageNo - 1) * pageSize).Take(pageSize).ExecuteAsync();看来您正在从收件箱中提取所有电子邮件,然后应用分页。可能这可能导致此标志设置为 True。 -
我试过你的代码,但问题仍然存在...... :(
-
我发现了同样的问题!