Почему поисковый фильтр EWS возвращает меньше писем, чем я вижу в outlook?

Я использую следующий код для получения электронных писем, тема которых содержит "MS" и "QW". Я вижу более 8 писем, удовлетворяющих критериям поиска, но код возвращает только два письма. Может кто-нибудь помочь мне взглянуть на то, в чем здесь проблема?

     var filter1 = new SearchFilter.ContainsSubstring(ItemSchema.Subject, "MS", ContainmentMode.Substring, ComparisonMode.IgnoreCase);
     var filter2 = new SearchFilter.ContainsSubstring(ItemSchema.Subject, "QW");
     var sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And, filter1, filter2);
     var findResults = service.FindItems(WellKnownFolderName.Inbox, sf view);

1 ответ

Несколько вещей, которые я вижу, если со Вторым поисковым фильтром вы не указали ContainmentMode или ComparsisonMode. Вы также, кажется, не добавили их в коллекцию SearchFilter. например, вы должны иметь

sf.Add(фильтр1); sf.Add(фильтр2);

Такой поиск приведет к довольно низкой производительности для папки с большим числом, я бы посоветовал вам взглянуть на AQS, тогда вы можете сделать

service.FindItems(WellKnownFolderName.Inbox, "Тема:MS И Тема:QW", представление);

Это позволит выполнять поиск по индексам контента и повысить производительность.

Другие вопросы по тегам