2016-04-06 8 views
0

Ist es möglich, nur Elemente mit einem bestimmten Flagstatus mithilfe eines SearchFilter-Objekts abzurufen? zum Beispiel alle ungelesenen Elemente abzurufen, unterhalb der Suchfilter verwendet wird:Abrufen von Elementen mit Flagsatz

SearchFilter sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false)); 

Gibt es ein Äquivalent Möglichkeit, alle Elemente abzurufen, die zugewiesen keine abgeschlossen Flag haben? Dank

+0

Könnten Sie ein bisschen mehr über Ihre Absicht sagen? – khlr

Antwort

0

Sie können es tun, um die pidTagFlagstatus erweiterte Eigenschaft mit https://msdn.microsoft.com/en-us/library/office/cc842307.aspx zB wenn der Wert 2, dann markiert wird, wenn der Wert 1 sein komplettes Beispiel ist

String MailboxToAccess = "[email protected]";    
ExtendedPropertyDefinition PR_FLAG_STATUS = new ExtendedPropertyDefinition(0x1090, MapiPropertyType.Integer); 
ExtendedPropertyDefinition FlagRequest = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Common, 0x8530, MapiPropertyType.String); 
SearchFilter sfSearchFilter = new SearchFilter.IsEqualTo(PR_FLAG_STATUS, 2); 
PropertySet fiFindItemPropset = new PropertySet(BasePropertySet.FirstClassProperties); 
fiFindItemPropset.Add(FlagRequest); 
FolderId FolderToAccess = new FolderId(WellKnownFolderName.Inbox, MailboxToAccess); 
ItemView ivItemView = new ItemView(1000); 
ivItemView.PropertySet = fiFindItemPropset; 
FindItemsResults<Item> FindItemResults = null; 
do 
{ 
    FindItemResults = service.FindItems(FolderToAccess, sfSearchFilter, ivItemView); 
    foreach (Item itItem in FindItemResults.Items) 
    { 
     Console.WriteLine(itItem.Subject); 
     Object FlagValue = null; 
     if (itItem.TryGetProperty(FlagRequest, out FlagValue)) 
     { 
      Console.WriteLine("Flag : " + FlagValue); 
     } 
    } 
    ivItemView.Offset += FindItemResults.Items.Count; 
} while (FindItemResults.MoreAvailable);