Поиск фразы в тексте элементов в папке
В этом примере выполняется поиск строки "office" в тексте элементов в папке "Входящие".
Пример
В этом примере кода для задания запроса используется синтаксис DASL (DAV Searching and Locating). Для создания фильтра в коде примера сначала проверяется, включена ли в хранилище по умолчанию функция мгновенного поиска, чтобы определить, использовать ли ключевое слово ci_phrasematch для точного совпадения фразы в теле элемента с "office" или ключевое слово like для поиска любого вхождения "office" как точной строки или подстроки в теле элемента. Затем в примере применяется фильтр к методу GetTable папки "Входящие", и результаты возвращаются в объекте Table . После этого в примере кода отображается тема каждого возвращенного элемента в объекте Table.
Значение свойства Body в примере кода задается с помощью представления пространства имен urn:schemas:httpmail:textdescription.
Для ключевого слова ci_phrasematch используется следующий синтаксис:
<PropertySchemaName> ci_phrasematch <ComparisonString>
Для ключевого слова like при сопоставлении префикса используется следующий синтаксис:
<PropertySchemaName> like <Token>%
Для ключевого слова like при сопоставлении любой подстроки используется следующий синтаксис:
<PropertySchemaName> like %<Token>%
Если для тестирования этого примера кода вы используете Visual Studio, сначала добавьте ссылку на компонент библиотеки объектов Microsoft Outlook 15.0 и укажите переменную Outlook при импорте пространства имен Microsoft.Office.Interop.Outlook. Инструкция Imports или using не должна идти непосредственно перед функциями в примере кода, но ее нужно добавить перед объявлением общедоступного класса. В следующих строках кода показано, как выполнить импорт и назначение в Visual Basic и C#.
Imports Outlook = Microsoft.Office.Interop.Outlook
using Outlook = Microsoft.Office.Interop.Outlook;
Private Sub DemoSearchBody()
Dim filter As String
If (Application.Session.DefaultStore.IsInstantSearchEnabled) Then
filter = "@SQL=" & Chr(34) _
& "urn:schemas:httpmail:textdescription" & Chr(34) _
& " ci_phrasematch 'office'"
Else
filter = "@SQL=" & Chr(34) _
& "urn:schemas:httpmail:textdescription" & Chr(34) _
& " like '%office%'"
End If
Dim table As Outlook.Table = _
Application.Session.GetDefaultFolder( _
Outlook.OlDefaultFolders.olFolderInbox).GetTable( _
filter, Outlook.OlTableContents.olUserItems)
While Not (table.EndOfTable)
Dim row As Outlook.Row = table.GetNextRow()
Debug.WriteLine(row("Subject"))
End While
End Sub
private void DemoSearchBody()
{
string filter;
if (Application.Session.DefaultStore.IsInstantSearchEnabled)
{
filter = "@SQL=" + "\""
+ "urn:schemas:httpmail:textdescription" + "\""
+ " ci_phrasematch 'office'";
}
else
{
filter = "@SQL=" + "\""
+ "urn:schemas:httpmail:textdescription" + "\""
+ " like '%office%'";
}
Outlook.Table table = Application.Session.GetDefaultFolder(
Outlook.OlDefaultFolders.olFolderInbox).GetTable(
filter, Outlook.OlTableContents.olUserItems);
while (!table.EndOfTable)
{
Outlook.Row row = table.GetNextRow();
Debug.WriteLine(row["Subject"]);
}
}