Compartilhar via


FindItemType Classe

Definição

A FindItemType classe representa uma consulta para localizar itens em uma caixa de correio.

public ref class FindItemType : ExchangeWebServices::BaseRequestType
public class FindItemType : ExchangeWebServices.BaseRequestType
Public Class FindItemType
Inherits BaseRequestType
Herança
FindItemType

Exemplos

O exemplo de código a seguir mostra uma consulta de item de localização que retorna os seguintes resultados:

  1. Um resultado de consulta indexado que começa no início do conjunto de resultados e retorna no máximo 10 entradas do conjunto de resultados.
  2. Uma pesquisa agrupada que faz o seguinte:
  3. Todas as propriedades definidas para a forma AllProperties, além das propriedades IsMeeting e Importance. Observe que a forma AllProperties é diferente em uma operação FindItem do que em uma operação GetItem.
  4. Itens encontrados na pasta padrão Calendário.
  5. Somente itens que têm uma hora de início que é após o horário atual.
  6. Itens classificados pela propriedade Subject.
  7. Itens encontrados apenas no nível superior da pasta pesquisada.
static void FindItem()
{
    // Create the service binding.
    ExchangeServiceBinding esb = new ExchangeServiceBinding();
    esb.Credentials = new NetworkCredential("username", "password", "domain");
    esb.Url = @"https://ExchangeServer/EWS/Exchange.asmx";

    // Form the FindItem request.
    FindItemType <span class="label">findItemRequest</span> = new <span class="label">FindItemType</span>();

    // Define the paging scheme for the result set.
    IndexedPageViewType ipvt = new IndexedPageViewType();
    ipvt.BasePoint = IndexBasePointType.Beginning;
    ipvt.MaxEntriesReturned = 10;
    ipvt.MaxEntriesReturnedSpecified = true;
    ipvt.Offset = 0;
    // Add the paging scheme to the request.
<span class="label">findItemRequest</span>.Item = ipvt;

    // Define the grouping scheme for the result set.
    GroupByType group = new GroupByType();
    // Define the property that is used to determine the order of groups of items in a group.
    AggregateOnType aggregate = new AggregateOnType();
    PathToUnindexedFieldType subject = new PathToUnindexedFieldType();
    subject.FieldURI = UnindexedFieldURIType.itemSubject;
    aggregate.Item = subject;
    aggregate.Aggregate = AggregateType.Minimum;
    group.AggregateOn = aggregate;
    // Define the property that is used to group items.
    PathToUnindexedFieldType importance = new PathToUnindexedFieldType();
    importance.FieldURI = UnindexedFieldURIType.itemImportance;
    group.Item = importance;
    // Define how the groups are ordered in the response.
    group.Order = SortDirectionType.Descending;
    // Add the grouping scheme to the request.
<span class="label">findItemRequest</span>.Item1 = group;

    // Define the item properties that are returned in the response.
    ItemResponseShapeType itemProperties = new ItemResponseShapeType();
    // Use the Default shape for the response.            
    itemProperties.BaseShape = DefaultShapeNamesType.Default;
    // Add more properties to the request.
    PathToUnindexedFieldType addIsMeeting = new PathToUnindexedFieldType();
    PathToUnindexedFieldType addImportance = new PathToUnindexedFieldType();
    addIsMeeting.FieldURI = UnindexedFieldURIType.calendarIsMeeting;
    addImportance.FieldURI = UnindexedFieldURIType.itemImportance;
    itemProperties.AdditionalProperties = new PathToUnindexedFieldType[2];
    itemProperties.AdditionalProperties[0] = addIsMeeting;
    itemProperties.AdditionalProperties[1] = addImportance;
    // Add the properties shape to the request.
<span class="label">findItemRequest</span>.ItemShape = itemProperties;

    // Identify which folders to search.
    DistinguishedFolderIdType[] folderIDArray = new DistinguishedFolderIdType[1];
    folderIDArray[0] = new DistinguishedFolderIdType();
    folderIDArray[0].Id = DistinguishedFolderIdNameType.calendar;
    // Add folders to the request.
<span class="label">findItemRequest</span>.ParentFolderIds = folderIDArray;

    // Create a restriction for the result set.
    RestrictionType restriction = new RestrictionType();
    PathToUnindexedFieldType pteft = new PathToUnindexedFieldType();
    pteft.FieldURI = UnindexedFieldURIType.calendarStart;
    FieldURIOrConstantType fieldURIORConstant = new FieldURIOrConstantType();
    fieldURIORConstant.Item = new ConstantValueType();
    (fieldURIORConstant.Item as ConstantValueType).Value = DateTime.Now.ToString();
    IsGreaterThanType isGreaterThan = new IsGreaterThanType();
    isGreaterThan.Item = pteft;
    isGreaterThan.FieldURIOrConstant = fieldURIORConstant;
    restriction.Item = isGreaterThan;
<span class="label">findItemRequest</span>.Restriction = restriction;

    // Define the sort order of items.
    FieldOrderType[] fieldsOrder = new FieldOrderType[1];
    fieldsOrder[0] = new FieldOrderType();
    PathToUnindexedFieldType subjectOrder = new PathToUnindexedFieldType();
    subjectOrder.FieldURI = UnindexedFieldURIType.itemSubject;
    fieldsOrder[0].Item = subjectOrder;
    fieldsOrder[0].Order = SortDirectionType.Ascending;
<span class="label">findItemRequest</span>.SortOrder = fieldsOrder;

    // Define the traversal type.
<span class="label">findItemRequest</span>.Traversal = ItemQueryTraversalType.Shallow;

    try
    {
        // Send the FindItem request and get the response.
        FindItemResponseType findItemResponse = esb.FindItem(<span class="label">findItemRequest</span>);

        // Access the response message.
        ArrayOfResponseMessagesType responseMessages = findItemResponse.ResponseMessages;
        ResponseMessageType responseMessage = responseMessages.Items[0];

        if (responseMessage is FindItemResponseMessageType)
        {
            FindItemResponseMessageType firmt = (responseMessage as FindItemResponseMessageType);
            FindItemParentType fipt = firmt.RootFolder;
            object obj = fipt.Item;

            // Determine whether the FindItem response contains grouped items.
            if (obj is ArrayOfGroupedItemsType)
            {
                ArrayOfGroupedItemsType groupedItems = (obj as ArrayOfGroupedItemsType);
                //TODO: Write code to handle grouped items.
            }

            // FindItem contains an array of items.
            else if (obj is ArrayOfRealItemsType)
            {
                ArrayOfRealItemsType items = (obj as ArrayOfRealItemsType);
                //TODO: Write code to handle items.
            }
        }
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
    }
}

Comentários

A FindItemType classe fornece muitas opções para consultar uma caixa de correio. Embora a consulta FindItem esteja limitada a pesquisas superficiais e excluídas de um conjunto de pastas, muitas opções estão disponíveis para criar expressões de pesquisa complexas e exibições do conjunto de resultados da pesquisa. A FindItemType classe contém um conjunto de propriedades que são usadas para definir os parâmetros da pesquisa. A tabela a seguir lista as propriedades que descrevem os diferentes parâmetros usados para construir consultas.

Propriedades usadas para construir consultas

Item Identifica o mecanismo de paginação do conjunto de resultados. Essa propriedade é opcional.
Item1 Identifica como os dados são agrupados no conjunto de resultados. Essa propriedade é opcional. Se essa propriedade não estiver definida, nenhum agrupamento será aplicado.
ItemShape Identifica quais propriedades do item são retornadas para os itens no conjunto de resultados.
ParentFolderIds Identifica quais pastas são pesquisadas.
Restriction Identifica um conjunto de parâmetros que definem um filtro nos itens retornados no conjunto de resultados. Essa propriedade é opcional.
SortOrder Identifica como os itens são ordenados no conjunto de resultados. Essa propriedade é opcional.
Traversal Identifica como a pesquisa é executada nas pastas.

A consulta FindItem deve ser usada para consultas que mudam com frequência e que não exigem uma travessia profunda da estrutura da pasta. Se uma pesquisa específica for executada regularmente, talvez seja mais apropriado criar uma pasta de pesquisa para a pesquisa. Observe que as pastas de pesquisa também podem executar travessias profundas da estrutura da pasta.

Importante: as pastas de pesquisa são executadas no banco de dados Exchange Server 2007 e, portanto, afetam o desempenho do computador que está executando o servidor exchange, enquanto as consultas FindItem afetam apenas o desempenho quando as consultas são recebidas pelo servidor exchange.

A consulta FindItem fornecerá grande parte das informações que um aplicativo cliente precisa. Basicamente, ele retorna um resumo de um item. FindItem retorna apenas os primeiros 512 bytes de qualquer propriedade streamable. Para Unicode, ele retorna os primeiros 255 caracteres usando uma cadeia de caracteres Unicode terminada em nulo.

Observação: FindItem não retorna um corpo de mensagem, anexos ou listas de destinatários.

Use GetItemType para obter os detalhes de itens específicos. GetItem retorna mais propriedades do que FindItem. Se mais informações forem necessárias, um aplicativo cliente deverá executar uma chamada FindItem e, em seguida, usar os identificadores de item em uma chamada GetItem para obter as propriedades que não estão disponíveis na chamada FindItem.

A tabela a seguir lista as propriedades retornadas nas chamadas FindItem e GetItem.

Propriedades retornadas em chamadas FindItem e GetItem

ConversationIndexConversationTopicCultura
DateTimeCreatedDateTimeReceivedDateTimeSent
DisplayCcDisplayToDe
HasAttachmentsImportanceInReplyTo
InternetMessageIdIsDeliveryReceiptRequestedIsDraft
IsFromMeIsReadIsReadReceiptRequested
IsResendIsResponseRequestedIsSubmitted
IsUnmodifiedItemClassItemId
ParentFolderIdReferênciasReminderDueBy
ReminderIsSetReminderMinutesBeforeStartRemetente
SensitivityTamanhoAssunto

Observação: embora a propriedade Sender seja retornada nas chamadas FindItem e GetItem, apenas o DisplayName (cadeia de caracteres) é retornado na chamada FindItem. DisplayName (cadeia de caracteres), EmailAddress (NonEmptyStringType) e RoutingType (EmailAddress) são retornados pela chamada GetItem.

As Item propriedades e Item1 são criadas pelo processo de geração de proxy e como ele lida com elementos de escolha de esquema XML. A Item propriedade é definida com um objeto que estende a BasePagingType classe. Essa propriedade descreve qual tipo de exibição será retornado na resposta. A Item1 propriedade é definida com um objeto que estende a BaseGroupByType classe. Esta propriedade descreve como a resposta agrupará itens no conjunto de resultados. Para obter mais informações sobre essas propriedades, consulte Artefatos proxy do elemento de escolha de esquema XML.

Construtores

FindItemType()

O FindItemType construtor inicializa uma nova instância da FindItemType classe.

Propriedades

Item

A Item propriedade obtém ou define o tipo de paginação que descreve como o conjunto de resultados da consulta é paged na resposta. Essa propriedade obtém ou define um IndexedPageViewTypeobjeto , FractionalPageViewType, CalendarViewTypeou ContactsViewType . Essa propriedade é opcional. Esta é uma propriedade de leitura/gravação.

Item1

A Item1 propriedade obtém ou define o tipo de agrupamento que descreve como o conjunto de resultados da consulta é agrupado na resposta. Essa propriedade obtém ou define um GroupByType objeto ou DistinguishedGroupByType . Essa propriedade é opcional. Esta é uma propriedade de leitura/gravação.

ItemShape

A ItemShape propriedade obtém ou define a forma do conjunto de consultas. Esta propriedade é obrigatória. Esta é uma propriedade de leitura/gravação.

ParentFolderIds

A ParentFolderIds propriedade obtém ou define as pastas que a operação FindItem pesquisa. Esta propriedade é obrigatória. Esta é uma propriedade de leitura/gravação.

QueryString

A FindItemType classe representa uma consulta para localizar itens em uma caixa de correio.

Restriction

A Restriction propriedade obtém ou define os parâmetros de pesquisa que definem uma consulta de item. Essa propriedade é opcional. Esta é uma propriedade de leitura/gravação.

SortOrder

A SortOrder propriedade obtém ou define a ordem de classificação de itens retornados no conjunto de resultados. Essa propriedade é opcional. Esta é uma propriedade de leitura/gravação.

Traversal

A Traversal propriedade obtém ou define o esquema de travessia usado para pesquisar itens em pastas. Esta propriedade é obrigatória. Esta é uma propriedade de leitura/gravação.

Aplica-se a