2016-05-26 4 views
1

Я пытаюсь отобразить ВСЕ контакты Outlook для выбранной учетной записи. Когда в учетной записи имеется несколько тысяч контактов, следующий код показывает только первые n контактов. Объект contactResults имеет свойство MorePagesAvailable и метод GetNextPageAsync(), но я, очевидно, НЕ знаю, как их использовать. Может кто-нибудь, пожалуйста, просветит меня.Outlook Contacts API - Paging Results

string token = (string)Session["access_token"]; 
string email = (string)Session["user_email"]; 

// Since we have the token locally from the Session, just return it here 
OutlookServicesClient client = new OutlookServicesClient(new Uri("https://outlook.office.com/api/v2.0"), async() => { return token; }); 

client.Context.SendingRequest2 += new EventHandler<SendingRequest2EventArgs>((sender, e) => InsertXAnchorMailboxHeader(sender, e, email)); 

var contactResults = await client.Me.Contacts 
        .OrderBy(c => c.DisplayName) 
        .Take(2500) 
        .Select(c => new DisplayContact(c)) 
        .ExecuteAsync(); 

foreach (DisplayContact displayContact in contactResults.CurrentPage) 
    System.Diagnostics.Debug.WriteLine(displayContact); 

ответ

0
var contactResults = await client.Me.Contacts 
       .OrderBy(c => c.DisplayName) 
       .Select(c => new DisplayContact(c)) 
       .ExecuteAsync(); 

while (true) 
{ 
    foreach (DisplayContact displayContact in contactResults.CurrentPage) 
     System.Diagnostics.Debug.WriteLine(displayContact); 

    if (contactResults.MorePagesAvailable) 
     contactResults = await contactResults.GetNextPageAsync(); 
    else 
     break; 
}