'Search by category Exchange Server EWS

I need to get all the emails that have a specific category name, how would I do this?

Right now I have this:

var col = new List<SearchFilter>();
col.Add(new SearchFilter.ContainsSubstring(ItemSchema.Categories, "Processed"));
var filter = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, col.ToArray());

FindItemsResults<Item> findResults = service.FindItems(
    WellKnownFolderName.Inbox,
    filter,
    new ItemView(10)
);

But that gives me a Microsoft.Exchange.WebServices.Data.ServiceResponseException that says {"The Contains filter can only be used for string properties."}

How would I do it?



Solution 1:[1]

I use the following code, to find all messages, which do NOT have set the category "Processed" and which have been received after a given date.

                SearchFilter sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And,
                                   new SearchFilter.Not(new SearchFilter.IsEqualTo(EmailMessageSchema.Categories, "Processed")),                                       
                                   new SearchFilter.IsGreaterThan(EmailMessageSchema.DateTimeReceived, minDate));

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Markus1980Wien