C# 如何获取邮箱中的邮件数?

C# 如何获取邮箱中的邮件数?,c#,microsoft-graph-api,C#,Microsoft Graph Api,我数邮箱里的邮件有问题。 我使用c#和Microsoft.Graph 1.18.0 这是我的密码 public async Task<long> GetItemsCountAsync(string userId) { var countOption = new QueryOption("$count", "true"); var request = ServiceClient.Value.Users[userId].

我数邮箱里的邮件有问题。 我使用c#和Microsoft.Graph 1.18.0

这是我的密码

 public async Task<long> GetItemsCountAsync(string userId)
        {
            var countOption = new QueryOption("$count", "true");

            var request = ServiceClient.Value.Users[userId].Messages.Request();
            request.QueryOptions.Add(countOption);
            var resultMessages = new List<Message>();
            var count = 0L;

            do
            {
                var messagesResult = await request.GetAsync();

                if (messagesResult.AdditionalData != null && messagesResult.AdditionalData.TryGetValue("@odata.count", out var messagesCount))
                {
                    count = (long)messagesCount;
                }

                resultMessages.AddRange(messagesResult);
                request = messagesResult.NextPageRequest;
            }
            while (request != null);

            return count;
        }
公共异步任务GetItemsCountAsync(字符串用户ID)
{
var countOption=新查询选项(“$count”,“true”);
var request=ServiceClient.Value.Users[userId].Messages.request();
request.QueryOptions.Add(countOption);
var resultMessages=新列表();
var计数=0L;
做
{
var messagesResult=await request.GetAsync();
if(messagesResult.AdditionalData!=null&&messagesResult.AdditionalData.TryGetValue(@odata.count),out var messagescont))
{
count=(长)messagescont;
}
resultMessages.AddRange(messagesResult);
请求=messagesResult.NextPageRequest;
}
while(请求!=null);
返回计数;
}
最后我有count=1417和resultMessages.count=760

我错过什么了吗


谢谢你的帮助

使用提供的示例,一切都很好。此处似乎无法信任的,
$count
,因为API不会返回指定搜索文件夹中邮件的准确计数(例如,有关详细信息,请参阅)

要获取消息,可以使用以下计数:

GET /users/{id | userPrincipalName}/mailFolders?$select=totalItemCount
其中
totalItemCount
表示邮件文件夹中的项目数

C#示例

var folders = await graphClient.Users[userId].MailFolders.Request().Select(f =>f.TotalItemCount).GetAsync();
var totalMessagesCount = folders.Sum(folder => folder.TotalItemCount);

使用提供的示例,一切都很好。此处似乎无法信任的,
$count
,因为API不会返回指定搜索文件夹中邮件的准确计数(例如,有关详细信息,请参阅)

要获取消息,可以使用以下计数:

GET /users/{id | userPrincipalName}/mailFolders?$select=totalItemCount
其中
totalItemCount
表示邮件文件夹中的项目数

C#示例

var folders = await graphClient.Users[userId].MailFolders.Request().Select(f =>f.TotalItemCount).GetAsync();
var totalMessagesCount = folders.Sum(folder => folder.TotalItemCount);