Compartilhar via


Pesquisar uma frase no corpo dos itens em uma pasta

Este exemplo procura a cadeia de caracteres "office" no Corpo dos itens na Caixa de Entrada.

Exemplo

Este exemplo de código usa uma sintaxe DAV Searching and Locating (DASL) para especificar uma consulta. Para construir o filtro, o exemplo de código primeiro verifica se a Pesquisa Instantânea está habilitada no repositório padrão para determinar se o ci_phrasematch palavra-chave para uma correspondência de frase exata de "office" no corpo do item ou como palavra-chave para corresponder a qualquer ocorrência de "office" como uma cadeia de caracteres exata ou uma substring no corpo do item. O exemplo aplica o filtro ao método GetTable na Caixa de Entrada e obtém os resultados em um objeto Table. O exemplo de código exibe o assunto de cada um dos itens retornados em Table.

O exemplo de código especifica a propriedade Body usando a representação do namespace urn:schemas:httpmail:textdescription.

A sintaxe para usar o palavra-chave ci_phrasematch é:

<PropertySchemaName> ci_phrasematch <ComparisonString>

A sintaxe para usar a palavra-chave like para correspondência de prefixo é:

<PropertySchemaName> like <Token>%

A sintaxe para usar a palavra-chave like para qualquer correspondência de subcadeia de caracteres é:

<PropertySchemaName> like %<Token>%

Se usar o Visual Studio para testar este exemplo de código, adicione primeiro uma referência ao componente da biblioteca de objetos do Microsoft Outlook 15.0 e especifique a variável do Outlook quando importar o namespace Microsoft.Office.Interop.Outlook. A instrução Imports ou using não deve vir diretamente antes de funções no exemplo de código, mas deve ser adicionada antes da declaração Class pública. The following lines of code show how to do the import and assignment in Visual Basic and 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"]);
    }
}

Confira também